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