比如說我想在文字前面添加一個(gè)圖標(biāo),如果我用普通元素寫的話我可以這樣寫:
/*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>
但是放個(gè)空的 i 標(biāo)簽總感覺很不爽,直接把它去掉吧!
/*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 標(biāo)簽,兩者效果相同:
同樣利用這一點(diǎn),我們可以使用::after偽元素解決經(jīng)典清除浮動(dòng)的問題:
.clearfix::after{ display:block; clear:both; content:""; overflow:hidden; height:0; }
當(dāng)然,如果你網(wǎng)站還需要兼容IE8,那還是用:after吧,::after不兼容。
有時(shí)候我可能需要在許多元素中同時(shí)加入相同的文字,那么可以考慮用這兩個(gè)偽元素。例如:
/*CSS*/.up:after{ content: '↑'; color: #f00;}.down:after{ content: '↓'; color: #0f0;}
/*HTML*/ <p class="up">上升</p> <p class="down">下降</p>
實(shí)現(xiàn)效果如下:
實(shí)現(xiàn)類似本文第一個(gè)例子中的圖片加文字效果,也可以使用偽元素直接插入圖片而不需要使用背景圖,就像這樣:
/*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;}
但是需要非常注意的是,使用這種方式插入的圖片并不能通過控制偽元素的大小來改變圖片的大小,只能引入固定大小的圖片(這個(gè)略坑啊...),所以個(gè)人覺得最好還是老老實(shí)實(shí)用背景圖片比較好。
可能你會(huì)說,加入連續(xù)項(xiàng)目編號(hào)還不簡(jiǎn)單嗎?直接用有序列表ol不就行了嘛!
是,確實(shí)是可以實(shí)現(xiàn),就像這樣:
<p>我的愛好:</p><ol><li>吃飯</li><li>睡覺</li><li>打豆豆</li></ol>
這是Chrome下的效果:
看起來挺好,沒啥問題,那我若想給前面的序號(hào)加粗呢?一臉懵逼了...
這時(shí)候你說,那我直接在每條文字前手動(dòng)加標(biāo)簽和數(shù)字,然后給標(biāo)簽加上樣式不就行了么?
/*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>
沒錯(cuò),現(xiàn)在是三條,要是是三十條,三百條,怎么辦?一條條加?(很傻很天真...)
這時(shí)候若用純CSS的方式,還得用到偽元素:
/*CSS*/ul li{ list-style: none; counter-increment: number;} //number相當(dāng)于是個(gè)變量,隨便取名就好,在偽元素中調(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ù)字可以么?
可以!偽元素很好很強(qiáng)大!
ul li{ list-style: none; counter-increment: number;} ul li::before{ content: counter(number,cjk-ideographic)"、"; font-weight: bold;}
效果如下:
除了這個(gè)cjk-ideographic
,你還可以使用更多CSS中 list-style-type 屬性:(直接貼上w3cshool里面的表格)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com