before 和after其實就是附著在元素前後的偽元素,說他是偽元素的意思就是,元素不是在DOM中生成的,而是在瀏覽器渲染引擎渲染CSS的時候畫上去的,這篇文章主要跟大家介紹了關於CSS3中偽元素::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*/ 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;}
以上是CSS3中偽元素::before和::after用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!