先來(lái)看看效果圖:
實(shí)現(xiàn)思路:
將偽元素:before和:after定位到元素底部中間,設(shè)置寬度從0變成100%達(dá)到目的。
實(shí)現(xiàn)方法:
1、首先定義一個(gè)塊狀元素(行內(nèi)元素沒(méi)有寬高)并修改樣式為一個(gè)背景色為淺灰色的矩形,設(shè)置相對(duì)定位。
html代碼
<div id="underline"></div>
css樣式
#underline{ width: 200px; height: 50px; background: #ddd; margin: 20px; position: relative; }
2、設(shè)置:before和:after兩個(gè)偽元素,將其設(shè)置為背景色為藍(lán)色(也就是下劃線(xiàn)的顏色),利用絕對(duì)定位將兩個(gè)元素固定到#underline底部中間位置。
css樣式
#underline:before, #underline:after{ content: "";/*單引號(hào)雙引號(hào)都可以,但必須是英文*/ width: 0; height: 3px; /*下劃線(xiàn)高度*/ background: blue; /*下劃線(xiàn)顏色*/ position: absolute; top: 100%; left: 50%; transition: all .8s ; /*css動(dòng)畫(huà)效果,0.8秒完成*/ }
3、設(shè)置鼠標(biāo)移入效果。
css樣式
#underline:hover:before{/*動(dòng)畫(huà)效果是從中間向左延伸至50%的寬度*/ left:0%; width:50%; } #underline:hover:after{/*動(dòng)畫(huà)效果是從中間向右延伸至50%的寬度*/ left: 50%; /*這句多余,主要是為了對(duì)照*/ width: 50%; }
優(yōu)化
1、雖然目的達(dá)到了,但是用了兩個(gè)偽元素,一個(gè)向左延伸50%,一個(gè)向右延伸50%,只用一個(gè)延伸至100%能否達(dá)到目的呢?
css代碼
#underline:after{ content: ""; width: 0; height: 5px; background: blue; position: absolute; top: 100%; left: 50%; transition: all .8s; } #underline:hover:after{/*原理是left:50%變成0%的同時(shí),寬度從0%變成100%*/ left: 0%; width: 100%; }
2、只定義:after偽元素,將其從距離左邊50%寬度為0的同時(shí)改變成距離左邊0%寬度為100%就可以實(shí)現(xiàn),從而達(dá)到了精簡(jiǎn)代碼的目的,而且還多余出了:before方便進(jìn)行別的操作。
完整代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠標(biāo)移入下劃線(xiàn)展開(kāi)</title> <style type="text/css"> #underline{ width: 200px; height: 50px; background: #ddd; margin: 20px; position: relative; } #underline:after{ content: ""; width: 0; height: 5px; background: blue; position: absolute; top: 100%; left: 50%; transition: all .8s; } #underline:hover:after{ left: 0%; width: 100%; } </style> </head> <body> <div id="underline"></div> </body> </html>
總結(jié)
關(guān)于才疏學(xué)淺,以后遇到了再補(bǔ)充。好了以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)的支持。
【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。