Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 如何阻止IE在伪元素中合成相对字体大小?_Css_Internet Explorer - Fatal编程技术网

Css 如何阻止IE在伪元素中合成相对字体大小?

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倍)。我怎样

我有一些图标是通过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倍)。我怎样才能防止这种情况发生


(顺便说一句,问题的实际代码。)

这是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