主頁 > 知識(shí)庫 > CSS 偽元素::marker詳解

CSS 偽元素::marker詳解

熱門標(biāo)簽:地圖標(biāo)注位置怎么弄圖 漯河外呼調(diào)研線路 廣西房產(chǎn)智能外呼系統(tǒng)推薦 旅游地圖標(biāo)注線路 400電話唐山辦理 電銷專用外呼線路 電銷外呼系統(tǒng)是違法的嗎 電話機(jī)器人鑰匙扣 威力最大的電銷機(jī)器人

本文將介紹 CSS 中一個(gè)比較有意思的偽元素 ::marker,利用它,我們可以讓我們的文字序號(hào)變得更加的有意思!

什么是 ::marker

CSS 偽元素 ::marker 是從 CSS Pseudo-Elements Level 3 開始新增,CSS Pseudo-Elements Level 4 中完善的一個(gè)比較新的偽元素,從 Chrome 86+ 開始得到瀏覽器的支持。

利用它,我們可以給元素添加一個(gè)偽元素,用于生成一個(gè)項(xiàng)目符號(hào)或者數(shù)字。

正常而言,我們有如下結(jié)構(gòu):

<ul>
  <li>Contagious</li>
  <li>Stages</li>
  <li>Pages</li>
  <li>Courageous</li>
  <li>Shaymus</li>
  <li>Faceless</li>
</ul>

默認(rèn)不添加任何特殊的樣式,它的樣式大概是這樣:

利用 ::marker 我們可以對(duì)序號(hào)前面的小圓點(diǎn)進(jìn)行改造:

li {
  padding-left: 12px;
  cursor: pointer;
  color: #ff6000;
}
li::marker {
  content: '>';
}

就可以將小圓點(diǎn)改造成任意我們想要的:

::marker 偽元素的一些限制

首先,能夠響應(yīng) ::marker 的元素只能是一個(gè) list item,譬如 ul 內(nèi)部的 li,ol 內(nèi)部的 li 都是 list item。

當(dāng)然,也不是說我們?nèi)绻朐谄渌厣鲜褂镁蜎]有辦法,除了 list item,我們可以對(duì)任意設(shè)置了 display: list-item 的元素使用 ::marker 偽元素。

其次,對(duì)于偽元素內(nèi)的樣式,不是任何樣式屬性都能使用,目前我們只能使用這些:

  • all font properties -- 所以字體屬性相關(guān)
  • color -- 顏色值
  • the content property -- content 內(nèi)容,類似于 ::before 偽元素 的 content,用于填充序號(hào)內(nèi)容
  • text-combine-upright (en-US), unicode-bidi and direction properties -- 文檔書寫方向相關(guān)

::marker 的一些應(yīng)用探索

譬如我們經(jīng)常見到標(biāo)題前面的一些裝飾:

或者,我們還可以使用 emoji 表情:

都非常適合使用 ::marker 來展示,注意用在非 list-item 元素上需要使用 display: list-item

<h1>Lorem ipsum dolor sit amet</h1>
<h1>Lorem ipsum dolor sit amet</h1>
h1 {
  display: list-item;
  padding-left: 8px;
}
h1::marker {
  content: '▍';
}
h1:nth-child(2)::marker {
  content: '😅';
}

CodePen Demo -- ::marker example

::marker 是可以動(dòng)態(tài)變化的

有意思的是,::marker 還是可以動(dòng)態(tài)變化的,利用這點(diǎn),可以簡單制作一些有意思的 hover 效果。

譬如這種,沒被選中不開心,選中開心的效果:

li {
  color: #000;
  transition: .2s all;
}
li:hover {
  color: #ff6000;
}
li::marker {
  content: '😩';
}
li:hover::marker {
  content: '😁';
}

CodePen Demo -- ::marker example

搭配 counter 一起使用

可以觀察到的是,::marker 偽元素與 ::before::after 偽元素是非常類似的,它們都有一個(gè) content 屬性。

content 里,其實(shí)是可以作用一些簡單的字符串加法操作的。利用這個(gè),我們可以配合 CSS 計(jì)數(shù)器 counter-resetcounter-increment 實(shí)現(xiàn)給 ::marker 元素添加序號(hào)的操作。

對(duì) counter-increment 還不算很了解的可以移步這里:MDN -- counter-increment

假設(shè)我們有如下 HTML:

<h3>Lorem ipsum dolor sit amet.</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
<h3>Itaque sequi eaque earum laboriosam.</h3>
<p>Ratione culpa reprehenderit beatae quaerat voluptatibus, debitis iusto?</p>
<h3>Laudantium sapiente commodi quidem excepturi!</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>

我們利用 ::marker 和 CSS 計(jì)數(shù)器 counter-increment 實(shí)現(xiàn)一個(gè)自動(dòng)計(jì)數(shù)且 h3 前面帶一個(gè) emoji 表情的有序列表:

body {
  counter-reset: h3;
}

h3 {
  counter-increment: h3;
  display: list-item;
}

h3::marker {
  display: list-item;
  content: "✔" counter(h3) " ";
  color: lightsalmon;
  font-weight: bold;
}

效果如下,實(shí)現(xiàn)了一個(gè)自動(dòng)給 ::marker 元素添加序號(hào)的效果:

CodePen Demo -- ::marker example

最后

本文介紹了什么是 ::marker 以及它的一些實(shí)用場(chǎng)景,可以看出雖然 ::before 、::after 也能實(shí)現(xiàn)類似的功能,但 CSS 還是提供了更具有語義化的標(biāo)簽 ::marker,也表明了大家需要對(duì)自己的前端代碼(HTML/CSS)的語義化更加注重。

好了,本文到此結(jié)束,希望對(duì)你有幫助 😃

更多精彩 CSS 技術(shù)文章匯總在我的 Github -- iCSS ,持續(xù)更新,歡迎點(diǎn)個(gè) star 訂閱收藏。

如果還有什么疑問或者建議,可以多多交流,原創(chuàng)文章,文筆有限,才疏學(xué)淺,文中若有不正之處,萬望告知。

到此這篇關(guān)于CSS ::marker 讓文字序號(hào)更有意思的文章就介紹到這了,更多相關(guān)CSS ::marker內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:無錫 欽州 銅陵 綏化 試駕邀約 湖北 湘西 焦作

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《CSS 偽元素::marker詳解》,本文關(guān)鍵詞  CSS,偽,元素,marker,詳解,CSS,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《CSS 偽元素::marker詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于CSS 偽元素::marker詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章