填充伪元素firefox问题

时间:2011-08-24 07:59:55

标签: css css3 pseudo-element

http://jsfiddle.net/e5tsL/
在chrome中,按钮按原样渲染,只有在FireFox中,:: before和:: after因为填充而向右渲染。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

据我所知,你发现了一个FIrefox错误。我说这是一个错误,因为如果它们不是伪元素,我会重新创建(尽可能接近)实际的节点结构。现在,您可能需要了解我已更正的Firefox magical padding bug,但即便如此,我仍会得到不同的结果:

http://jsfiddle.net/Dba8h/7/

这个小提琴有两个按钮,在Chrome,Safari和Opera中看起来相同,但在Firefox中被打破了。

一个解决方案是使用以下规则为Firefox提供样式表(一些如何,可能需要jQuery):

button::before, button::after { left: -12px; }

这会将它移回并对齐内部元素。当然,如果Mozilla修复了这个bug,它们会突然以错误的方式移动。

或者,您可能只想找到一些其他方法来重新创建效果,而不使用伪节点,定位等的复杂混合(例如,您可以获得非常类似的效果[减去曲线]使用CSS3 Gradients。这对浏览器的负担要小得多,对大多数最终用户来说也是99%。)

更新:以下是仅使用渐变的示例:http://jsfiddle.net/cXHCH/1/

肉眼几乎相同(不包括活动状态),维护起来要复杂得多。使用Ultimate CSS Gradient Generator

选择的渐变