[英]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.