先上代碼 html的:
<nav> <ul> <li>哈哈哈</li> <li>吼吼吼</li> <li>嘿嘿嘿</li> <li>嘎嘎嘎</li> <li class="move"></li> <!--<li class="fly fly1"></li> <li class="fly fly2"></li> <li class="fly fly3"></li> <li class="fly fly4"></li> --> </ul> </nav>
css的:
nav, ul, li { padding: 0; margin: 0;} nav { position: relative; left: 35%; top: 20px; width: 30%; height: 60px; background-color: #66CCFF; box-sizing: border-box; display: inline-block; } ul { width: 100%; height: 60px; vertical-align: middle; } li { display: inline-block; width: 20%; text-align: center; height: 60px; line-height: 60px; cursor: pointer; color: #000000; transition: color 0.4s ease-in-out; } li:hover { color: #FFFFFF;} .move { display: inline-block; border: 4px solid #FF3333; height: 0px; background-color: #FF3333; position: absolute; left: 0; top: 56px; transition: left 0.4s ease-in-out;} li:nth-child(1):hover~.move { left: 0;} li:nth-child(2):hover~.move { left: 20%;} li:nth-child(3):hover~.move { left: 40%;} li:nth-child(4):hover~.move { left: 60%;}
開始做的時候,用float來完成列表項在一行的效果,這樣的結(jié)果就是順序會顛倒,而且還是以塊元素形式存在,所以同一導(dǎo)航欄其他內(nèi)容無法排在一行,display:inline-block很好的解決了這一點。
其他小亮點的使用就是,用一個li的空元素當(dāng)做用來移動的標(biāo)識,把他絕對定位到第一個位置,然后通過~來設(shè)置每個li元素的懸停時候move類這個li空元素的位置。(css3的新屬性真的很好用,尤其是過渡tratition屬性)
ps:本想用同樣的原理,來實現(xiàn)當(dāng)懸停時,實現(xiàn)從下到上的一個顏色變換。不過好像自己的思路不對,我設(shè)了四個空元素,把他們高度定為0,絕對定位到底,當(dāng)懸停時高度變?yōu)?0px,事實和想象還是有距離。
前兩天終于拖沓的略讀了《css3專業(yè)開發(fā)指南》這本書,css3的好多屬性雖然有些還沒有被規(guī)范使用,但效果真的很棒。也更加模糊了css,js之間的分界,不再是各管各事,不過對設(shè)計的人來說還是方便了不少。
需要學(xué)習(xí)CSS的同學(xué)請關(guān)注Gxl網(wǎng)CSS視頻教程,眾多css在線視頻教程可以免費(fèi)觀看!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com