使用CSS3悬停效果打造不同的页面版式
CSS3 为 Web 开发带来了非常令人兴奋的变化,特别是 CSS 3D 转换、动画等特性的支持,可以轻松的创建很酷的 Web 效果。
CSS3新增添了实现动画效果的新功能,通过本文,你可以对这些新功能有个初步了解。今天就分享一些悬停效果,可以更好的帮助你开发
HTML标记
这个简单的结构使我们能够使这些效果。正如你可以看到下面的代码中我们创建了一个父类视图,里面的内容。然后,我们创建一个类的面具,我们将了CSS3过渡到悬停效果。在后面的例子中,这个语法可以稍稍发生变化,这取决于你想要的效果应用。
1 <div class="view"> 2 <img src="images/1.jpg" /> 3 <div class="mask"></div> 4 <div class="content"> 5 <a href="#" class="info" title="Full Image">Full Image</a> 6 </div> 7 </div>
CSS
在这里,你将我们的教程设置的基本属性。对于每一个效果会有不同的CSS文件,你可以把到一个CSS文件中的各种效果。
1 .view { 2 width: 300px; 3 height: 200px; 4 margin: 10px; 5 float: left; 6 border: 5px solid #fff; 7 overflow: hidden; 8 position: relative; 9 text-align: center; 10 box-shadow: 0px 0px 5px #aaa; 11 cursor: default; 12 } 13 .view .mask, .view .content { 14 width: 300px; 15 height: 200px; 16 position: absolute; 17 overflow: hidden; 18 top: 0; 19 left: 0; 20 } 21 .view img { 22 display: block; 23 position: relative; 24 } 25 .view a.info { 26 background:url(../img/link.png) center no-repeat; 27 display: inline-block; 28 text-decoration: none; 29 padding:0; 30 text-indent:-9999px; 31 width:20px; 32 height:20px; 33 }
1 Example
HTML
<div class="view effect"> <img src="images/1.jpg" /> <div class="mask"></div> <div class="content"> <a href="#" class="info" title="Full Image">Full Image</a> </div> </div>
CSS
这里除了使用的边框属性来创建一个三角形,我使用的多个转换,允许我在动画期间对每个属性有更多的控制。
1 effect img { 2 opacity:1; 3 transform:scale(1,1); 4 transition: all 0.2s ease-in; 5 } 6 .effect .mask { 7 opacity:0; 8 overflow:visible; 9 border-color:rgba(0,0,0,0.7) transparent transparent transparent; 10 border-style:solid; 11 border-width:150px; 12 width:0; 13 height:0; 14 transform:translateY(-125px); 15 transition: transform 0.2s 0.1s ease-out, opacity 0.3s ease-in-out; 16 } 17 .effect a.info { 18 opacity:0; 19 transform:translateY(-125px); 20 transition: transform 0.3s ease-in, opacity 0.1s ease-in-out; 21 } 22 .effect:hover img { 23 opacity:0.7; 24 transform:scale(2,2); 25 } 26 .effect:hover .mask { 27 opacity: 1; 28 transform: translateY(0px); 29 } 30 .effect:hover a.info { 31 opacity:1; 32 transform:translateY(100px); 33 }
2 Example
HTML
在此示例中的语法会稍有不同
1 <div class="view second-effect"> 2 <img src="images/2.jpg" /> 3 <div class="mask"> 4 <a href="#" class="info" title="Full Image">Full Image</a> 5 </div> 6 </div>
CSS
在这个例子当中使用边框熟悉对变量进行调整. 这里使用 box-sizing. box-sizing 熟悉被用来改变默认的CSS盒宽度和高度大小,具体怎么使用呢,我简单解释一下
(说到 IE 的 bug,在 IE6以前的版本中,IE对盒模型的解析出现一些问题,跟其它浏览器不同,将 border 与 padding 都包含在 width 之内。而另外一些浏览器则与它相反,是不包括border和padding的。box-sizing:content-box:当我们设置 box-sizing: content-box; 时,浏览器对盒模型的解释遵从我们之前认识到的 W3C 标准,当它定义width和height时,它的宽度不包括border和padding。box-sizing:border-box:当我们设置box-sizing: border-box; 时,浏览器对盒模型的解释与 IE6之前的版本相同,当它定义width和height时,border和padding则是被包含在宽高之内的。内容的宽和高可以通过定义的 “width”和 “height”减去相应方向的“padding”和“border”的宽度得到。内容的宽和高必须保证不能为负,必要时将自动增大该元素border box的尺寸以使其内容的宽或高最小为0。
)
1 .second-effect .mask { 2 opacity: 0; 3 overflow:visible; 4 border:0px solid rgba(0,0,0,0.7); 5 box-sizing:border-box; 6 transition: all 0.4s ease-in-out; 7 } 8 .second-effect a.info { 9 position:relative; 10 top:-10px; 11 opacity:0; 12 transform:scale(0,0); 13 transition: transform 0.2s 0.1s ease-in, opacity 0.1s ease-in-out; 14 } 15 .second-effect:hover .mask { 16 opacity: 1; 17 border:100px solid rgba(0,0,0,0.7); 18 } 19 .second-effect:hover a.info { 20 opacity:1; 21 transform:scale(1,1); 22 transition-delay:0.3s; 23 }
3 Example
HTML
这里在view类的基础上添加third-effect类.
1 <div class="view third-effect"> 2 <img src="images/3.jpg" /> 3 <div class="mask"> 4 <a href="#" class="info" title="Full Image">Full Image</a> 5 </div> 6 </div>
CSS
使用边框属性只需要简单的几行代码就能得到非常棒的效果.
1 .third-effect .mask { 2 opacity: 0; 3 overflow:visible; 4 border:100px solid rgba(0,0,0,0.7); 5 box-sizing:border-box; 6 transition: all 0.4s ease-in-out; 7 } 8 .third-effect a.info { 9 position:relative; 10 top:-10px; /* Center the link */ 11 opacity: 0; 12 transition: opacity 0.5s 0s ease-in-out; 13 } 14 .third-effect:hover .mask { 15 opacity: 1; 16 border:100px solid rgba(0,0,0,0.7); 17 } 18 .third-effect:hover a.info { 19 opacity:1; 20 transition-delay: 0.3s; 21 }
4 Example
HTML
在此示例中的代码是比之前的明显减少,但做出来的悬停效果将是非常令人印象深刻的.
1 <div class="view fourth-effect"> 2 <a href="#" title="Full Image"><img src="images/4.jpg" /></a> 3 <div class="mask"></div> 4 </div>
CSS
仅使用mask类与border-radius属性结合打造出一个美丽的悬停效果,单击图片实现图片的可见性
1 .fourth-effect .mask { 2 position:absolute; /* Center the mask */ 3 top:50px; 4 left:100px; 5 cursor:pointer; 6 border-radius: 50px; 7 border-width: 50px; 8 display: inline-block; 9 height: 100px; 10 width: 100px; 11 border: 50px solid rgba(0, 0, 0, 0.7); 12 box-sizing:border-box; 13 opacity:1; 14 visibility:visible; 15 transform:scale(4); 16 transition:all 0.3s ease-in-out; 17 } 18 .fourth-effect:hover .mask { 19 opacity: 0; 20 border:0px solid rgba(0,0,0,0.7); 21 visibility:hidden; 22 }
5 Example
HTML
最后一个例子是上面几个例子的结合.添加一个fifth-effect类
1 <div class="view fifth-effect"> 2 <a href="#" title="Full Image"><img src="images/5.jpg" /></a> 3 <div class="mask"></div> 4 </div>
<div class="view fifth-effect"> <a href="#" title="Full Image"><img src="images/5.jpg" /></a> <div class="mask"></div> </div>
CSS
1 .fifth-effect img { 2 opacity:0.2; 3 transition: all 0.3s ease-in; 4 } 5 .fifth-effect .mask { 6 cursor:pointer; 7 opacity:1; 8 visibility:visible; 9 border:100px solid rgba(0,0,0,0.7); 10 box-sizing:border-box; 11 transition: all 0.4s cubic-bezier(0.940, 0.850, 0.100, 0.620); 12 } 13 .fifth-effect:hover .mask { 14 border:0px double rgba(0,0,0,0.7); 15 opacity:0; 16 visibility:hidden; 17 } 18 .fifth-effect:hover img { 19 opacity:1; 20 }
本文链接:使用CSS3悬停效果打造不同的页面版式
123