日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

伪元素::before与::after的用法

發(fā)布時間:2024/4/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 伪元素::before与::after的用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

::before與::after兩個偽元素其實是CSS3中的內(nèi)容,然而實際上在CSS2中就已經(jīng)有了這兩者的身影,只不過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*/ <div class="del"><i></i><span>刪除</span></div>

但是放個空的 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*/ <div class="del"><span>刪除</span></div>

這里就直接用::before偽元素代替了空的 i 標簽,兩者效果相同:


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

.clearfix::after{ display:block; clear:both; content:""; overflow:hidden; height:0; }

當(dāng)然,如果你網(wǎng)站還需要兼容IE8,那還是用:after吧,::after不兼容。

二、在元素中插入文本

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

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

實現(xiàn)效果如下:


三、在元素中插入圖像

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

/*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;}

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

四、插入連續(xù)項目編號

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

是,確實是可以實現(xiàn),就像這樣:

<p>我的愛好:</p> <ol><li>吃飯</li><li>睡覺</li><li>打豆豆</li> </ol>

這是Chrome下的效果:



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

這時候你說,那我直接在每條文字前手動加標簽和數(shù)字,然后給標簽加上樣式不就行了么?

/*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>

沒錯,現(xiàn)在是三條,要是是三十條,三百條,怎么辦?一條條加?(很傻很天真...)

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

/*CSS*/ ul li{ list-style: none; counter-increment: number;} //number相當(dāng)于是個變量,隨便取名就好,在偽元素中調(diào)用 ul li::before{ content: counter(number)"."; font-weight: bold;} //注意這里不同于JS,counter(number)與"."之間不需要加任何東西,直接連接就好 /*HTML*/ <p>我的愛好:</p> <ul><li>吃飯</li><li>睡覺</li><li>打豆豆</li> </ul>

效果如下:


那我如果不想要阿拉伯?dāng)?shù)字,我就想用中文數(shù)字可以么?

可以!偽元素很好很強大!

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里面的表格)

總結(jié)

以上是生活随笔為你收集整理的伪元素::before与::after的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。