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


場景:

         假如有一天,你的在寫一個前端項目,是關於一份點餐商家電話信息表,你啪塔啪塔地寫完了,突然間項目經理跑過來找你,要求你在每一個商家的電話號碼前都添加一個電話符號,來使得電話號碼更直觀和頁面更美觀。這個時候你就糾結了,這不是折磨人嗎?這不是要我在每個電話號碼前都添加一個<img>標簽?這要整到猴年馬月?搞不好還會出現標簽浮動的問題。

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

這里我簡單寫了一個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>

實現的效果如下

每一個號碼都有一個class屬性,我只需要對這個class屬性寫一次css渲染層和添增上

:: before偽元素就可以實現這個功能了。顯然這比一個個添加<img>標簽要輕松得多。

可能有人會問,這個的符號是怎么來的?html官方規定了一些特殊符號的unicode碼,具體可以看http://www.cnblogs.com/starof/p/4718550.html

 

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

(1)content:’()’

作用:在標簽前/后添加字符串

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

例如:

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

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

 

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

作用:在標簽前/后添加圖片(圖片通過網絡url實時加載)

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

例如:

在<div id='yidong-nub'>

<a href='http://www.10086.cn/images/index/logo.png'>&emsp;10086</a>

</div>

添加css裝飾代碼

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

 

(3)清除浮動

::after{

content : ’’ ;

display:block;

}

用法是設置content的為空字符串

關於清除浮動的一些可用方法有很多種,我在這里就不展開來說了。

 

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

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

 

最后值得知道的是,使用::before和::after偽元素這種添加內容的方式,只是在css渲染頁面的時候添加上去的,在DOM節點上是查不到這些添加上去的內容的。所以,一般不要添加實際的內容。意味着除了文本內容和圖片/icon之外的html標簽是無法添加進去的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM