[英]Benefits/Drawbacks of using pseudo elements (:after, :before) vs. padding/background positioning?
我正在挖掘我正在使用的網站上的一些舊代碼,它使用了iconize 。 它似乎工作的方式是添加這樣的類......
a[href=$='.pdf']{
padding: 5px 20px 5px 0;
background: transparent url('icon.gif') no-repeat center right;
}
這樣做有什么好處,而不是我做過的方式? 像這樣......
a[href=$='.pdf']:after{
content: url('icon.gif');
vertical-align: sub;
}
這是演示他們兩個的小提琴......
我的問題是......如果有的話,使用偽元素與標准填充和背景定位來附加/預先添加圖像到元素有什么好處?
只是一些初始和后來的想法。 我可能還會想到一些補充。
好處):
劣勢(S):
好處):
padding
, border
, opacity
等 ,就像它是一個真實的元素一樣。 img
可能的html的重要部分,因此偽元素符合增強演示文稿的要求,但如果缺少則不會導致問題(在舊瀏覽器)。 劣勢(S):
EHLOVader在對該問題的評論中指出,他關注的部分內容是偽元素可能需要的額外編碼,而不是背景/填充,如果想要切換到左側圖標。 他給了這個codepen例子 。 但是,可以使用較少的代碼來執行偽元素。 假設.iconleft
是一個用於放置圖標而不是右邊的類,而.iconit
是設置圖標的類,那么下面的代碼簡潔地說明了使用:not()
選擇器的CSS3瀏覽器( 這里是小提琴 ,使用OP的原始.pseudo
類進行圖標化):
.iconit:not(.iconleft):after,
.iconit.iconleft:before {
content: url('http://www.jasonapollovoss.com/web/wp-content/uploads/2010/09/pdf_icon_small.png');
vertical-align: sub;
}
如果使用iconright
類將圖標顯式設置為右側,或者iconleft
在左側(不需要iconit
類),則可以使用CSS2瀏覽器完成相同的操作:
.iconright:after,
.iconleft:before {
content: url('http://www.jasonapollovoss.com/web/wp-content/uploads/2010/09/pdf_icon_small.png');
vertical-align: sub;
}
偽類如此有用的原因在於它們允許您動態地設置內容樣式。 在上面的示例中,我們可以描述當用戶與它們交互時如何設置樣式鏈接。 正如我們將看到的,新的偽類允許我們根據文檔在其中的位置或狀態動態設置內容樣式。閱讀更多內容http://coding.smashingmagazine.com/2011/03/30/how-to-use -css3-偽類/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.