CSS之 :before && :after的用法,僞類和僞元素的區別

一::before && :after的用法

:before

如同對僞元素的名稱同樣,:before 是用來給指定的元素的內容前面插入新的內容。舉例說明:css

.before:before{content:'you before'; color:red;} <div class="before"> me</div>

在這裏咱們給僞元素 :before 添加了屬性 content,並賦值爲 you before。咱們來看效果:css3

//在指定元素的內容 me 前添加了新內容 you beforesegmentfault

咱們不難發現這裏經過僞元素 :before 添加的新內容區域默認的 display 屬性值爲 inline,那麼咱們可不能夠修改新內容區域的屬性,答案是確定的。你能夠像修改其餘元素同樣修改它的樣式,咱們來將它的 display 屬性值來改成block函數

.before:before{content:'you before'; display:block; color:red;} <div class="before"> me</div>

如今咱們再來看下效果:url

//由僞元素 :before 生成新內容區域果真變爲了塊元素spa

content 屬性

對於僞元素 :before 和 :after 而言,屬性 content 是必須設置的,咱們知道屬性的值能夠爲字符串,也能夠有其它形式,好比指向一張圖片的 URL:code

 content: url( "img/icon.png" )

配合僞類使用

僞元素 :before 還能夠配合僞類使用,這裏舉常常與 :before 配合使用的僞類 :hover 爲例:對象

.before:hover:before{content:'you before'; color:red;} <div class="before"> me</div>

配合取值函數 attr() 使用

還有一種較爲常見的用法,即配合取值函數 attr() 一塊兒使用,如:blog

a::before{content: attr(title)} <a href="http://www.segmentfault.com" title="專業面向開發者的中文技術問答社區"></a>

這個達到的效果跟下面同樣:圖片

<a href="http://www.segmentfault.com">專業面向開發者的中文技術問答社區</a>

:after

僞元素 :after 與 僞元素 :before 類型相同,只不過它指定的屬性 content 值爲出如今指定元素內容的後面,說明省。

二:僞類和僞元素的區別

僞類種類

僞元素種類

僞類:做用對象是整個元素 

 例如:

a:link
 {color:#111}
a:hover
 {color:#222}
div:first-child
 {color:#333}
div:nth-child(3)
 {color:#444}

儘管這些條件不是基於DOM的,但結果每個都是做用於一個完整的元素,好比整個連接,段落,div等等。

僞元素:做用於元素的一部分

例如:

p::first-line
 {color:#555}
p::first-letter
 {color:#666}
a::before
 {content : "hello
 world";}

僞元素做用於元素的一部分:一個段落的第一行 或者 第一個字母。

總結:

僞元素其實至關於僞造了一個元素,例如before,first-letter達到的效果就是僞造了一個元素,而後添加了其相應的效果而已;

而僞類沒有僞造元素,例如first-child只是給子元素添加樣式而已。

僞元素和僞類之因此這麼容易混淆,是由於他們的效果相似並且寫法相仿,但實際上 css3 爲了區分二者,已經明確規定了僞類用一個冒號來表示,而僞元素則用兩個冒號來表示。

但由於兼容性的問題,因此如今大部分仍是統一的單冒號,可是拋開兼容性的問題,咱們在書寫時應該儘量養成好習慣,區分二者。

相關文章
相關標籤/搜索