国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

純CSS實現導航欄下劃線跟隨滑動效果

2024-07-11 08:25:18
字體:
來源:轉載
供稿:網友

老規矩先上張圖,如何使用純 CSS 制作如下效果?

 

在繼續閱讀下文之前,你可以先緩一緩。嘗試思考一下上面的效果或者動手嘗試一下,不借助 JS ,能否巧妙的實現上述效果。

OK,繼續。這個效果是我在業務開發的過程中遇到的一個類似的小問題。其實即便讓我借助 Javascript ,我的第一反應也是,感覺很麻煩啊。所以我一直在想,有沒有可能只使用 CSS 完成這個效果呢?

定義需求

我們定義一下簡單的規則,要求如下:

假設 HTML 結構如下:

<ul> <li>不可思議的CSS</li> <li>導航欄</li> <li>光標小下劃線跟隨</li> <li>PURE CSS</li> <li>Nav Underline</li></ul>

導航欄目的  li  的寬度是不固定的

當從導航的左側  li  移向右側  li ,下劃線從左往右移動。同理,當從導航的右側  li  移向左側  li ,下劃線從右往左移動。
 

實現需求

第一眼看到這個效果,感覺這個跟隨動畫,僅靠 CSS 是不可能完成的。

如果想只用 CSS 實現,只能另辟蹊徑,使用一些討巧的方法。

好,下面就借助一些奇技淫巧,使用 CSS 一步一步完成這個效果。分析一下難點:

寬度不固定

第一個難點,  li 的寬度是不固定的。所以,我們可能需要從  li 本身的寬度上做文章。

既然每個  li 的寬度不一定,那么它對應的下劃線的長度,肯定是是要和他本身相適應的。自然而然,我們就會想到使用它的  border-bottom 。

li { border-bottom: 2px solid #000;}

那么,可能現在是這樣子的(li 之間是相連在一起的,li 間的間隙使用  padding 產生):

 

默認隱藏,動畫效果

當然,這里一開始都是沒有下劃線的,所以我們可能需要把他們給隱藏起來。

li { border-bottom: 0px solid #000;}

推翻重來,借助偽元素

這樣好像不行,因為隱藏之后,hover  li 的時候,需要下劃線動畫,而  li 本身肯定是不能移動的。所以,我們考慮借助偽元素。將下劃線作用到每個  li 的偽元素之上。

li::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-bottom: 2px solid #000;}

下面考慮第一步的動畫,hover 的時候,下劃線要從一側運動展開。所以,我們利用絕對定位,將  li 的偽元素的寬度設置為0,在 hover 的時候,寬度從  width: 0 -> width: 100% ,CSS 如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中山市| 仁怀市| 高密市| 莆田市| 绥宁县| 陈巴尔虎旗| 桂东县| 来宾市| 安西县| 建湖县| 义马市| 财经| 安徽省| 蓝山县| 奉贤区| 兴和县| 柞水县| 云梦县| 新河县| 尼玛县| 武夷山市| 曲阳县| 雷州市| 伊吾县| 新巴尔虎右旗| 土默特右旗| 精河县| 中阳县| 长岭县| 康马县| 晴隆县| 鲁甸县| 罗甸县| 聂拉木县| 区。| 多伦县| 唐海县| 习水县| 柘城县| 福清市| 淮南市|