日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

妙用 CSS counters 實現(xiàn)逐層縮進

來源: 責編: 時間:2023-12-25 09:34:05 229觀看
導(dǎo)讀之前使用純 CSS 實現(xiàn)了一個樹形結(jié)構(gòu),效果如下:還有一點,樹形結(jié)構(gòu)是逐層縮進的,是使用內(nèi)邊距實現(xiàn)的,但是這樣會有點擊范圍的問題,「層級越深,點擊范圍越小」,如下。之前的方案是用絕對定位實現(xiàn)的,比較巧妙,但也有點難以理解,不過

DKd28資訊網(wǎng)——每日最新資訊28at.com

之前使用純 CSS 實現(xiàn)了一個樹形結(jié)構(gòu),效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

還有一點,樹形結(jié)構(gòu)是逐層縮進的,是使用內(nèi)邊距實現(xiàn)的,但是這樣會有點擊范圍的問題,「層級越深,點擊范圍越小」,如下。DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

之前的方案是用絕對定位實現(xiàn)的,比較巧妙,但也有點難以理解,不過現(xiàn)在發(fā)現(xiàn)了另一種方式也能很好的實現(xiàn)縮進效果,一起看看吧DKd28資訊網(wǎng)——每日最新資訊28at.com

一、counter() 與 counters()

我們平時使用的一般都是counter,也就是計數(shù)器,比如:DKd28資訊網(wǎng)——每日最新資訊28at.com

<ul>  <li></li>  <li></li>  <li></li></ul>

加上計數(shù)器,通常用偽元素來顯示這個計數(shù)器。DKd28資訊網(wǎng)——每日最新資訊28at.com

ul {  counter-reset: listCounter; /*初始化計數(shù)器*/}li {  counter-increment: listCounter; /*計數(shù)器增長*/}li::before {  content: counter(listCounter); /*計數(shù)器顯示*/}

這就是一個最簡單的計數(shù)器了,效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

我們還可以改變計數(shù)器的形態(tài),比如改成大寫羅馬數(shù)字(upper-roman)。DKd28資訊網(wǎng)——每日最新資訊28at.com

li::before {  content: counter(listCounter, upper-roman);}

效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

有關(guān)計數(shù)器,網(wǎng)上的教程非常多,大家可以自行搜索DKd28資訊網(wǎng)——每日最新資訊28at.com

然后我們再來看counters(),比前面的counter()多了一個s,叫做「嵌套計數(shù)器」,有什么區(qū)別呢?下面來看一個例子,還是和上面一樣,只是結(jié)構(gòu)上復(fù)雜一些、DKd28資訊網(wǎng)——每日最新資訊28at.com

<ul>  <li>    <ul>      <li></li>      <li></li>      <li></li>    </ul>  </li>  <li></li>  <li></li>  <li>    <ul>      <li></li>      <li>        <ul>          <li></li>          <li></li>          <li></li>        </ul>      </li>    </ul>  </li></ul>

效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

看著好像也不錯?但是好像從計數(shù)器上看不出層級效果,我們把counter()換成counters(),注意,counters()要多一個參數(shù),表示連接字符,也就是嵌套時的分隔符,如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

li::before {  content: counters(listCounter, '-');}

效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

是不是可以非常清楚的看出每個列表的層級?下次碰到類似的需求就不需要用 JS 去遞歸生成了,直接用 CSS 渲染,簡單高效,也不會出錯。DKd28資訊網(wǎng)——每日最新資訊28at.com

默認ul是有padding的,我們把這個去除看看,變成了這樣。DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

嗯,看著這些「長短不一」的序號,是不是剛好可以實現(xiàn)樹形結(jié)構(gòu)的縮進呢?DKd28資訊網(wǎng)——每日最新資訊28at.com

二、樹形結(jié)構(gòu)的逐層縮進

回到文章開頭,我們先去除之前的padding-left,會變成這樣。DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

完全看不清結(jié)構(gòu)關(guān)系,現(xiàn)在我們加上嵌套計數(shù)器。DKd28資訊網(wǎng)——每日最新資訊28at.com

.tree details{    counter-reset: count;}.tree summary{    counter-increment: count;}.tree summary::before{    content: counters(count,"-");    color: red;}

由于結(jié)構(gòu)關(guān)系,目前序號都是1,沒關(guān)系,只需要有嵌套關(guān)系就行,效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

是不是剛好把每個標題都擠過去了? 然后我們把中間的連接線去除,這樣可以更方便的控制縮進的寬度。DKd28資訊網(wǎng)——每日最新資訊28at.com

.tree summary::before{    content: counters(count,"");    color: red;}

效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

最后,我們只需要設(shè)置這個計數(shù)器的顏色為透明就行了。DKd28資訊網(wǎng)——每日最新資訊28at.com

.tree summary::before{    content: counters(count,"");    color: transparent;}

最終效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

這樣做的好處是,每個樹形節(jié)點都是完整的寬度,所以 可以很輕易的實現(xiàn)hover效果,而無需借助偽元素去擴大點擊范圍。DKd28資訊網(wǎng)——每日最新資訊28at.com

.tree summary:hover{    background-color: #EEF2FF;}

效果如下:DKd28資訊網(wǎng)——每日最新資訊28at.com

DKd28資訊網(wǎng)——每日最新資訊28at.com

還可以通過修改計數(shù)器的字號來調(diào)整縮進,完整代碼可以訪問以下鏈接:DKd28資訊網(wǎng)——每日最新資訊28at.com

  • CSS tree counters (juejin.cn)[1]
  • CSS tree counters (codepen.io)[2]

三、總結(jié)一下

以上就是本文的全部內(nèi)容了,主要介紹了計數(shù)器的兩種形態(tài),以及想到的一個應(yīng)用場景,下面總結(jié)一下DKd28資訊網(wǎng)——每日最新資訊28at.com

  • 逐層縮進用內(nèi)邊距比較容易實現(xiàn),但是會造成子元素點擊區(qū)域過小的問題。
  • counter 表示計數(shù)器,比較常規(guī)的單層計數(shù)器,形如 1、2、3。
  • counters 表示嵌套計數(shù)器,在有層級嵌套時,會自動和上一層的計數(shù)器相疊加,形如1、1-1、1-2、1-2-1。
  • 嵌套計數(shù)器會逐層疊加,計數(shù)器的字符會逐層增加,計數(shù)器所占據(jù)的位置也會越來越大。
  • 嵌套計數(shù)器所占據(jù)的空間剛好可以用作樹形結(jié)構(gòu)的縮進,將計數(shù)器的顏色設(shè)置為透明就可以了。
  • 用計數(shù)器的好處是,每個樹形節(jié)點都是完整的寬度,而無需借助偽元素去擴大點擊范圍。

一個還算實用的小技巧,你學(xué)到了嗎?DKd28資訊網(wǎng)——每日最新資訊28at.com

[1]CSS tree counters (juejin.cn): https://code.juejin.cn/pen/7315323581772005414。DKd28資訊網(wǎng)——每日最新資訊28at.com

[2]CSS tree counters (codepen.io): https://codepen.io/xboxyan/pen/jOJOBdr。DKd28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-53336-0.html妙用 CSS counters 實現(xiàn)逐層縮進

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Redis Sentinel的監(jiān)控和自動化處理Redis節(jié)點故障恢復(fù)機制

下一篇: 被面試官PUA了:創(chuàng)建索引時一定會鎖表

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機的真機包裝盒在網(wǎng)上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設(shè)計方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網(wǎng)課,網(wǎng)課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業(yè)又有了新的發(fā)展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 三萬字盤點 Spring 九大核心基礎(chǔ)功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎(chǔ)功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎(chǔ)功能,不
  • 騰訊蓋樓,字節(jié)拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風(fēng)頭無兩。你可以說陳思誠的
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創(chuàng)始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一
  • iQOO Neo8系列或定檔5月23日:首發(fā)天璣9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經(jīng)上市便受到了用戶的廣泛關(guān)注。在時隔半年后,
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發(fā)布的朋友圈
  • Windows 11發(fā)布,微軟一改往常對老機型開放的態(tài)度

    距離 Windows 11 發(fā)布已經(jīng)過去一周,在過去一周里,很多數(shù)碼愛好者圍繞其對 Android 應(yīng)用的支持、對老機型的升級問題展開了激烈討論。與以往不同的是,在這次大
Top 主站蜘蛛池模板: 浏阳市| 乌兰浩特市| 阳东县| 达日县| 墨脱县| 德州市| 山阴县| 新乡县| 淳化县| 峨眉山市| 芷江| 理塘县| 平潭县| 尖扎县| 琼结县| 长乐市| 珲春市| 黎城县| 巴中市| 鄂伦春自治旗| 固原市| 遂溪县| 藁城市| 神农架林区| 甘肃省| 绥化市| 晋宁县| 察雅县| 曲阳县| 尚志市| 河北区| 浮山县| 汪清县| 江都市| 阳泉市| 巴马| 濮阳县| 府谷县| 岚皋县| 海阳市| 密山市|