利用偽元素和css3實現鼠標移入下划線向兩邊展開效果


一、思路:

  將偽元素:before和:after定位到元素底部中間,設置寬度從0變成100%達到目的。

二、實現:

  1、首先定義一個塊狀元素(行內元素沒有寬高)並修改樣式為一個背景色為淺灰色的矩形,設置相對定位。

html代碼
<div id="underline"></div>

css樣式
#underline{
    width: 200px;
    height: 50px;
    background: #ddd;
    margin: 20px;
    position: relative;
}

  2、設置:before和:after兩個偽元素,將其設置為背景色為藍色(也就是下划線的顏色),利用絕對定位將兩個元素固定到#underline底部中間位置。

css樣式
#underline:before,
#underline:after{
	content: "";/*單引號雙引號都可以,但必須是英文*/
	width: 0;
	height: 3px; /*下划線高度*/
	background: blue; /*下划線顏色*/
	position: absolute;
	top: 100%;
	left: 50%;
	transition: all .8s ; /*css動畫效果,0.8秒完成*/
}

  3、設置鼠標移入效果。

css樣式 
#underline:hover:before{/*動畫效果是從中間向左延伸至50%的寬度*/
	left:0%; 
	width:50%;
}
#underline:hover:after{/*動畫效果是從中間向右延伸至50%的寬度*/
	left: 50%; /*這句多余,主要是為了對照*/
	width: 50%;
}

三:優化

  1、雖然目的達到了,但是用了兩個偽元素,一個向左延伸50%,一個向右延伸50%,只用一個延伸至100%能否達到目的呢?

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%的同時,寬度從0%變成100%*/
	left: 0%;
	width: 100%;
}

  2、只定義:after偽元素,將其從距離左邊50%寬度為0的同時改變成距離左邊0%寬度為100%就可以實現,從而達到了精簡代碼的目的,而且還多余出了:before方便進行別的操作。

四、完整代碼

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>鼠標移入下划線展開</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>

 五、兼容性問題

  才疏學淺,以后遇到了再補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM