Css 如何阻止IE在伪元素中合成相对字体大小?
我有一些图标是通过CSS中的伪元素设置的,如下所示:Css 如何阻止IE在伪元素中合成相对字体大小?,css,internet-explorer,Css,Internet Explorer,我有一些图标是通过CSS中的伪元素设置的,如下所示: .button a:before { font-size: 1.3em; font-family: font-awesome; content: "*"; } 其他地方也有类似的声明,比如 .button .otherclass a:before { font-size: 1.35em; } 这在现代web浏览器中很好用,但是IE>=9将所有字体大小合成,因此产生的图标非常巨大(大约是其大小的5倍)。我怎样
.button a:before {
font-size: 1.3em;
font-family: font-awesome;
content: "*";
}
其他地方也有类似的声明,比如
.button .otherclass a:before {
font-size: 1.35em;
}
这在现代web浏览器中很好用,但是IE>=9将所有字体大小合成,因此产生的图标非常巨大(大约是其大小的5倍)。我怎样才能防止这种情况发生
(顺便说一句,问题的实际代码。)这是IE中的一个bug,正如@Aibrean提到的页面所报告的,但该页面还显示,微软不承认这是一个bug(他们说他们无法重现)。可通过以下简单文档在Win 7上的IE 11中复制:
.foo、.bar:在{
字号:2em;
内容:“X”;
}
.bar:在{
字号:5em;
}
XX
bar
有一个比使用绝对字体大小略好的解决方案,那就是在:before或:after声明中使用rem
em和rem单位基于默认字体大小(通常为16px,因此1rem=1em=16px),因此如果用户更改其默认字体,则您的字体也将更改。然而,rem单位并不复合
rem支持正在增长,但您可以同时使用这两种支持(如果您不需要复合):
然后那些不支持rem的浏览器(如IE8)将使用em。由于IE8没有您提到的复合问题,这实际上很好地工作 什么?具体到你的版本。这很重要,很公平。更新。(这是IE版本>=9。奇怪的是,这个问题并没有在IE 8或更低版本中出现。)这是一个已知的问题,仅供参考。请看,我通过使用绝对字体大小,即
16px
而不是1em
来解决这个问题。凌乱,但它能工作。
font-size: 2em
font-size: 2rem