::before和::after偽元素的妙用

場(chǎng)景:
假如有一天,你的在寫一個(gè)前端項(xiàng)目,是關(guān)于一份點(diǎn)餐商家電話信息表,你啪塔啪塔地寫完了,突然間項(xiàng)目經(jīng)理跑過來找你,要求你在每一個(gè)商家的電話號(hào)碼前都添加一個(gè)電話符號(hào),來使得電話號(hào)碼更直觀和頁面更美觀。這個(gè)時(shí)候你就糾結(jié)了,這不是折磨人嗎?這不是要我在每個(gè)電話號(hào)碼前都添加一個(gè)<img>標(biāo)簽?這要整到猴年馬月?搞不好還會(huì)出現(xiàn)標(biāo)簽浮動(dòng)的問題。

這個(gè)時(shí)候::after偽元素和::before偽元素就是救星了,在css中有這么兩個(gè)偽類,允許通添加偽元素在html元素前/后添加內(nèi)容。

這里我簡(jiǎn)單寫了一個(gè)demo

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
.phone-number{
    font-size: 14px;
    font-weight: 600;}

.phone-number::before{
    content: '\260E';
    font-size: 22px;
    color: red;
}
</style>
</head>

<body>
    <div class='phone-number'>&ensp;13300000000</div>
    <div class='phone-number'>&ensp;13300000001</div>
    <div class='phone-number'>&ensp;13300000002</div>
    <div class='phone-number'>&ensp;13300000003</div>
    <div class='phone-number'>&ensp;13300000004</div>
</body>
</html>

實(shí)現(xiàn)的效果如下

效果圖

每一個(gè)號(hào)碼都有一個(gè)class屬性,我只需要對(duì)這個(gè)class屬性寫一次css渲染層和添增上

:: before偽元素就可以實(shí)現(xiàn)這個(gè)功能了。顯然這比一個(gè)個(gè)添加<img>標(biāo)簽要輕松得多。

可能有人會(huì)問,這個(gè)的符號(hào)是怎么來的?html官方規(guī)定了一些特殊符號(hào)的unicode碼,具體可以看http://www.cnblogs.com/starof/p/4718550.html。

下面是:: before偽元素和:: after偽元素的具體用法和使用規(guī)則

(1)content:’()’

作用:在標(biāo)簽前/后添加字符串

使用規(guī)則:content后面一定要用‘’把要添加的內(nèi)容括起來,否則是無法顯示的(括號(hào)不一定需要添加)。

例如:

image

在<p>¥80元</p>之后添加如下css裝飾代碼:

p::after{
         content:'門市價(jià)100元';
         font-size: 14px;
         text-decoration: line-through;
         color: grey;
}

(2)content:url(‘圖片地址’)

作用:在標(biāo)簽前/后添加圖片(圖片通過網(wǎng)絡(luò)url實(shí)時(shí)加載)

使用規(guī)則:必須用url()引入需要添加的圖片,道理跟background的設(shè)置一樣。圖片的地址也需要用‘’括起來。

例如:

image

<div id='yidong-nub'>

<a >&emsp;10086</a>

</div>

添加css裝飾代碼

a::before{
    content:url('http://www.10086.cn/images/index/logo.png');
}

(3)清除浮動(dòng)

::after{

content : '';

display:block;

}

用法是設(shè)置content的為空字符串

關(guān)于清除浮動(dòng)的一些可用方法有很多種,我在這里就不展開來說了。

有人可能會(huì)說,用法(1)在p標(biāo)簽后面添加內(nèi)容,直接在html代碼里面的p標(biāo)簽后面再增加一個(gè)p標(biāo)簽不就行了嗎?為什么還要用這種方法呢?

可以思考一下,通過在后面添加一個(gè)p標(biāo)簽,同時(shí)也需要用css代碼去裝飾這個(gè)新添加上去的標(biāo)簽。顯然,代碼量上,后者比前者多了,而且后者在html中新增了一個(gè)DOM節(jié)點(diǎn),如果數(shù)量很多時(shí),解析器在解析時(shí)難免會(huì)增加一定的時(shí)間。而前者沒有這種問題,而且還能更好實(shí)現(xiàn)表現(xiàn)層和樣式層的分離式開發(fā)。

最后值得知道的是,使用::before和::after偽元素這種添加內(nèi)容的方式,只是在css渲染頁面的時(shí)候添加上去的,在DOM節(jié)點(diǎn)上是查不到這些添加上去的內(nèi)容的。所以,一般不要添加實(shí)際的內(nèi)容。意味著除了文本內(nèi)容和圖片/icon之外的html標(biāo)簽是無法添加進(jìn)去的。

轉(zhuǎn)載自# ::before和::after偽元素的妙用
了解更多可點(diǎn)擊# ::before和::after偽元素的用法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,781評(píng)論 1 45
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,107評(píng)論 1 92
  • 本文轉(zhuǎn)載自:眾成翻譯譯者:為之漫筆鏈接:http://www.zcfy.cc/article/239原文:http...
    極樂君閱讀 7,537評(píng)論 1 62
  • 學(xué)會(huì)使用CSS選擇器熟記CSS樣式和外觀屬性熟練掌握CSS各種選擇器熟練掌握CSS各種選擇器熟練掌握CSS三種顯示...
    七彩小鹿閱讀 6,443評(píng)論 2 66
  • 轉(zhuǎn)自理解偽元素 :before 和 :after層疊樣式表(CSS)的主要目的是給HTML元素添加樣式,然而,在一...
    種諤閱讀 938評(píng)論 0 3

友情鏈接更多精彩內(nèi)容