首頁  >  文章  >  web前端  >  偽元素::before與::after使用詳解

偽元素::before與::after使用詳解

php中世界最好的语言
php中世界最好的语言原創
2018-03-21 10:40:264439瀏覽

這次帶給大家偽元素::before與::after使用詳解,使用偽元素::before與::after的注意事項有哪些,下面就是實戰案例,一起來看一下。

前言

眾所周知::before與::after兩個偽元素其實是CSS3中的內容,然而實際上在CSS2中就已經有了這兩者的身影,只不過CSS2中是前面加一個冒號來表示(:before和:after)。今天主要講講這兩個偽元素該如何使用。

一、與普通元素一樣可以給其添加樣式

比如說我想在文字前面添加一個圖標,如果我用普通元素寫的話我可以這樣寫:

/*CSS*/
.del{ font-size: 20px;}
.del i{ display: inline-block; width: 20px; height: 25px; margin-right: 2px; vertical-align: middle; 
        background: url("imgs/delete.png") no-repeat center; background-size: 100%;}
.del span{ vertical-align: middle;}
/*HTML*/
<p class="del"><i></i><span>删除</span></p>

但是放個空的i 標籤總覺得很不爽,直接把它去掉吧!

/*CSS*/
.del{ font-size: 20px;}
.del::before{ content: ""; display: inline-block; width: 20px; height: 25px; margin-right: 2px; vertical-align: middle; 
        background: url("imgs/delete.png") no-repeat center; background-size: 100%;}
.del span{ vertical-align: middle;}
/*HTML*/
<p class="del"><span>删除</span></p>

這裡就直接用::before偽元素取代了空的i 標籤,兩者效果相同:

同樣利用這一點,我們可以使用::after偽元素解決經典清除浮動的問題:

.clearfix::after{ display:block; clear:both; content:""; overflow:hidden; height: 0; }
當然,如果你網站還需要相容IE8,那還是用:after吧,::after不相容。

二、在元素中插入文字

有時候我可能需要在許多元素中同時加入相同的文字,那麼可以考慮用這兩個偽元素。例如:

/*CSS*/
.up:after{ content: '↑'; color: #f00;}
.down:after{ content: '↓'; color: #0f0;}
/*HTML*/
<p class="up">上升</p>
<p class="down">下降</p>

實作效果如下:

#三、在元素中插入圖片

##實現類似本文第一個例子中的圖片加文字效果,也可以使用偽元素直接插入圖片而不需要使用背景圖,就像這樣:

/*CSS*/
.del{ font-size: 20px;}
.del::before{ content: url("imgs/delete.png"); display: inline-block; margin-right: 2px; vertical-align: middle; }
.del span{ vertical-align: middle;}

但是需要非常注意的是,使用這種方式插入的圖片並不能透過控制偽元素的大小來改變圖片的大小,只能引入固定大小的圖片(這個略坑啊...),所以個人覺得最好還是老老實實用背景圖片比較好。

四、插入連續項目編號

可能你會說,加入連續項目編號還不簡單嗎?直接用有序列表ol不就行了嘛!

是,確實是可以實現,就像這樣:

<p>我的爱好:</p>
<ol>
    <li>吃饭</li>
    <li>睡觉</li>
    <li>打豆豆</li>
</ol>
這是Chrome下的效果:

看起來挺好,沒啥問題,那我若想給前面的序號加粗呢?一臉懵逼了...

這時候你說,那我直接在每條文字前手動加標籤和數字,然後給標籤加上樣式不就行了麼?

/*CSS*/
ul li{ list-style: none;}
ul li span{ font-weight: bold;}
/*HTML*/
<p>我的爱好:</p>
<ul>
    <li><span>1.</span>吃饭</li>
    <li><span>2.</span>睡觉</li>
    <li><span>3.</span>打豆豆</li>
</ul>
沒錯,現在是三條,要是三十條,三百條,怎麼辦?一條條加? (很傻很天真...)

這時候若用純CSS的方式,還得用到偽元素:

/*CSS*/
ul li{ list-style: none; counter-increment: number;}   //number相当于是个变量,随便取名就好,在伪元素中调用
ul li::before{ content: counter(number)"."; font-weight: bold;}  //注意这里不同于JS,counter(number)与"."之间不需要加任何东西,直接连接就好
/*HTML*/
<p>我的爱好:</p>
<ul>
    <li>吃饭</li>
    <li>睡觉</li>
    <li>打豆豆</li>
</ul>
效果如下:

那我如果不要阿拉伯數字,我就想用中文數字可以麼?

可以!偽元素很好很強大! ###
ul li{ list-style: none; counter-increment: number;}  
ul li::before{ content: counter(number,cjk-ideographic)"、"; font-weight: bold;}
###效果如下:###############除了這個cjk-ideographic,你還可以使用更多CSS中###list-style-type####屬性:(直接貼上w3cshool裡面的表格)###############我相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! ######推薦閱讀:###

CSS3做出條紋大背景

CSS3的滑鼠移入圖片動態提示效果

css中sticker-footer佈局如何使用

以上是偽元素::before與::after使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn