日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

css 里面的偽元素其實是非常好用的,但是經常容易被大家忽略,偽元素里面常用到的 content 屬性,可能現在很多人僅僅以為 content 屬性的值只支持字符串,除了字符串外常用到的還有 uri、counter ,今天所要介紹的就是 conter(計數器)。

先看如下的例子:

你可能不知道的 CSS 計數器

 

<div>
 <h3>桃翁</h3>
 <h3>介紹</h3>
 <h3>css 計數器</h3>
</div>

根據如上的 html 你是否有辦法不通過 JAVAScript ,僅僅用 CSS 在 title 前面增加 Title number: 呢?

CSS 計數器基本概念

如果僅僅增加一個 Title,大家都知道通過偽元素(:before 或者:after),設置 content 為 Title,但是如何自動根據 h3 出現的順序來展示自動編號可能很多人就不知道了。

自動編號在 CSS 2.1 中是通過兩個屬性控制的,'counter-increment'[1]'counter-reset'[2]。通過這些屬性定義的計數器用于'content’[3]屬性的 counter() 和 counters() 函數

初始化計數器

在使用計數器的時候需要先初始化這個計數器,并且設置一個計數器的名字(變量)。下面是例子,title 就是名字,conter-reset 就是用來初始化的,這個屬性是必須設置的,否則沒辦法用計數器。

'counter-reset'[4]屬性也含有一列一個或多個計數器,每個后面可以跟一個可選的整數。該整數給定了每次出現該元素時給計數器設置的值,默認為 0

counter-reset: 計數器名稱[, 默認值number]; /* 重置計數器成0 */

我自己是一名從事了多年開發的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。

計數器自增

有了一個計數器的變量后,然后可以讓這個變量進行自增:

'counter-increment'[5]屬性接受一個或多個計數器名(標識符),每個后面都可以跟一個可選的整數。這個整數表示每次出現該元素時計數器遞增幾。默認增量是 1,可以接受 0 和負數

counter-increment: 計數器名稱[, 增量]; /* 增加計數器值 */

顯示計數器

最后就是現實計數器的值,獲取計數器的值有兩個函數:counter() 和 counters() ,如上面的例子:

content: counter(計數器名稱[, 顯示的風格]) /* 顯示計數器 */

或者

counters(計數器名稱, 嵌套時拼接字符串[, 可選的顯示風格])

基本使用

學完了基本概念,然后就可以解決上面的問題了。按照步驟來,三步:

  1. 初始化計時器
div {
 counter-reset: title; /* 重置計數器成0 */
}
  1. 計數器自增
h3:before {
 counter-increment: title; /* 增加計數器值 */
}
  1. 顯示計數器
h3:before {
 content: "Title " counter(title) ": "; /* 顯示計數器 */
}

合起來的解決方案如下:

div {
 counter-reset: title; /* 重置計數器成0 */
}
h3:before {
 counter-increment: title; /* 增加計數器值 */
 content: "Title " counter(title) ": "; /* 顯示計數器 */
}

高級用法

嵌套計數器與作用域

計數器是“自嵌套的(self-nesting)”,如果重置一個位于后代元素或者偽元素中的計數器,會自動創建一個新的計數器實例。這對 HTML 中的列表之類的場景來說很重要,這種場景下,元素自身可以嵌套任意深度,不用為每一層定義唯一命名的計數器

計數器的作用域從文檔中具有'counter-reset'[6]該計數器的第一個元素開始,包括該元素的后代、后續兄弟及其后代。

官方套話比較難懂,用大白話說就是設置了 counter-reset ,那么這個元素的的子元素都屬于這個作用域下。

想要完全理解作用域,就得把下面這個 圖看懂:

你可能不知道的 CSS 計數器

 

上面的這個 HTML 代碼,再加上這段 CSS 代碼:

OL { counter-reset: item }
LI { display: block }
LI:before {
 counter-increment: item
}

OL 將會創建一個計數器,并且 OL 的所有子級將引用該計數器,如果我們用 item[n]表示"item"計數器的第 n 個實例,用"{"和"}"表示一個作用域的開始和結束,那么上面 HTML 片段將使用標注的計數器。

注意看 2.3.1 的兩個元素,由于他們都在 2.3 下面,有兩個同名的計數器,那么這兩個同名計數器會分別創建實例,所有會得到兩個 2.3.1。

如果懂了作用域的關系,接下來就可以通過 counter() 或者 counters() 函數進行展示。

counter

Counter 顯示代碼如下:

OL { counter-reset: item }
LI { display: block }
LI:before {
 content: counter(item) ". ";
 counter-increment: item
}

效果如下:

你可能不知道的 CSS 計數器

 

可以看到 counter 只會顯示當前作用域下計數器的值,如果要生成嵌套作用域的計數器就得用 counters 函數。

counters

OL { counter-reset: item }
LI { display: block }
LI:before {
 content: counters(item, '.') " ";
 counter-increment: item;
}

你可能不知道的 CSS 計數器

 

更換格式

在顯示計數器部分 counter 和 counters 都有一個可選參數,顯示風格,這個顯示風格跟 list-style-type[7] 是一樣的,比如我們將文章開頭的例子拿來舉例,默認是 decimal 風格,比如換成字母(type 是 lower-latin)形式,css 如下:

div {
 counter-reset: title; /* 重置計數器成0 */
}
h3:before {
 counter-increment: title; /* 增加計數器值 */
 content: "Title " counter(title, lower-latin) ": "; /* 顯示計數器 */
}

效果如下,list-style-type 有很多種,甚至還有中文(list-style-type 是 cjk-ideographic)的。

你可能不知道的 CSS 計數器

 

自定義起始值

起始值訂為 5

div {
 counter-reset: title 5; /*起始值訂為 5 */
}
h3:before {
 counter-increment: title;
 content: "Title " counter(title) ": ";
}

你可能不知道的 CSS 計數器

 

自定義每次遞增的值

每次遞增的值為 2

div {
 counter-reset: title 5;
}
h3:before {
 counter-increment: title 2; /* 每次遞增的值為 2 */
 content: "Title " counter(title) ": ";
}

你可能不知道的 CSS 計數器

 

使用場景

場景 1:嵌套列表

比如要生成一個文章的大綱:

你可能不知道的 CSS 計數器

 

場景 2:計算已經勾選的復選框

使用輸入框的:checked 偽類,我們可以檢查復選框是否被選中,選中的話,我們計數器的數值就會增加。

下面的這個 2 種菜系直接就是可以通過計數器來實現的,不需要使用 js

你可能不知道的 CSS 計數器

 

場景 3:自動追蹤文檔條目

當你需要處理一些重復元素的時候,并且你同樣想統計他們的數量,那么這個方案會很好用。

你可能不知道的 CSS 計數器

 

原文鏈接:https://mp.weixin.qq.com/s/B_4fzEL8gw6E-g5Ltya2PQ
作者:陶翁

分享到:
標簽:CSS
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定