国产探花免费观看_亚洲丰满少妇自慰呻吟_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 如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿拉善右旗| 古田县| 谢通门县| 赤水市| 建平县| 积石山| 文水县| 偃师市| 巫溪县| 保康县| 青河县| 茶陵县| 昆明市| 新乡县| 土默特左旗| 曲水县| 射洪县| 钟祥市| 益阳市| 军事| 桃源县| 中西区| 鹿邑县| 兰坪| 汤原县| 兴业县| 汉源县| 彭山县| 宁国市| 方正县| 安达市| 华宁县| 化州市| 东方市| 宜都市| 南川市| 富源县| 贡觉县| 南召县| 兰考县| 玉龙|