CSS3 3D導航切換代碼

隨着Web技術的發展,HTML5和CSS3技術在網站建設中越發普及,除此之外,由於扁平化風格設計的風靡,CSS3技術所帶來的SEO搜索引擎優化收益越來越大。以色塊爲主的扁平化設計風格大大減少了網站的圖片數量,CSS3的使用大大減少了網站中JS的調用以及大量對DOM的操作,從根本上優化網站,從而提高用戶體驗。在本次教程中,讓我們通過CSS3 Transform屬性來實現華麗的導航菜單3D轉換效果。

HTML代碼

<section class="bg-color">

<nav class="sytm-effect">

<a href="http://www.sytm.net/"><span data-hover="sytm">添美科技</span></a>

<a href="http://www.sytm.net/wangzhanjianshe/"><span data-hover="Develop">網站建設</span></a>

<a href="http://www.sytm.net/jiejuefangan/"><span data-hover="Design">網上商城</span></a>

<a href="http://www.sytm.net/mobile/"><span data-hover="Mobile">移動應用</span></a>

<a href="http://www.sytm.net/ruanjiankaifa/"><span data-hover="sytmsoft">軟件開發</span></a>

</nav>

</section>

我們使用HTML5語義化標籤section以及nav來進行佈局,值得注意的是,我們將變化後的數據儲存在了自定義屬性data-hover中,從而充分實現我們所提倡的前端解耦。

CSS代碼

[css] view plaincopyprint?

.sytm-effect a span {

position: relative;

display: inline-block;

padding: 0 14px;

background: #2195de;

-webkit-transition: -webkit-transform 0.3s;

-moz-transition: -moz-transform 0.3s;

transition: transform 0.3s;

-webkit-transform-origin: 50% 0;

-moz-transform-origin: 50% 0;

transform-origin: 50% 0;

-webkit-transform-style: preserve-3d;

-moz-transform-style: preserve-3d;

transform-style: preserve-3d;

}

通過CSS3 Transform屬性來保留3D轉換,通過CSS3 Transition屬性定義變化效果時間。

[css] view plaincopyprint?

.sytm-effect a span::before {

position: absolute;

top: 100%;

left: 0;

width: 100%;

height: 100%;

background: #0965a0;

content: attr(data-hover);

-webkit-transition: background 0.3s;

-moz-transition: background 0.3s;

transition: background 0.3s;

-webkit-transform: rotateX(-90deg);

-moz-transform: rotateX(-90deg);

transform: rotateX(-90deg);

-webkit-transform-origin: 50% 0;

-moz-transform-origin: 50% 0;

transform-origin: 50% 0;

}

我們通過before這個僞類,將data-hover中的數據加入到變換的單位中,從而減少DOM的構建數量。

通過CSS3 Transform屬性來定義before這個僞類的變形效果。

[css] view plaincopyprint?

.sytm-effect a:hover span,

.sytm-effect a:focus span {

-webkit-transform: rotateX(90deg) translateY(-22px);-moz-transform: rotateX(90deg) translateY(-22px);transform: rotateX(90deg) translateY(-22px);}

.sytm-effect a:hover span::before,

.sytm-effect a:focus span::before {

background: #28a2ee;

}

通過hover以及focus動作來定義對應的元素屬性,從而實現華麗的變化效果,完成!

注:該效果只能在高級瀏覽器下實現,不支持IE8及以下版本瀏覽器。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章