Internet Explorer css攻击负数和更少编译
我有一个较少的文件,在那里我应用了IE8 css特定的黑客,比如:Internet Explorer css攻击负数和更少编译,css,internet-explorer,less,Css,Internet Explorer,Less,我有一个较少的文件,在那里我应用了IE8 css特定的黑客,比如: #example { height: 46px; //ALL BROWSERS height: 50px\9; //ONLY IE8 } 当从LESS编译到CSS时,上面的例子是有效的,使用负数会导致编译错误 #example { height: 46px; //ALL BROWSERS height: -50px\9; //ONLY IE8 BUT GIVES A COMPILATION ERROR
#example {
height: 46px; //ALL BROWSERS
height: 50px\9; //ONLY IE8
}
当从LESS编译到CSS时,上面的例子是有效的,使用负数会导致编译错误
#example {
height: 46px; //ALL BROWSERS
height: -50px\9; //ONLY IE8 BUT GIVES A COMPILATION ERROR WITH LESS
}
我尝试了不同的解决方案,但除了手动修改css编译的文件外,没有一个有效。根据反斜杠(\
)字符表示字符转义。例如,content
属性的值为表示换行。所以从技术上讲,50px\9
是符合CSS规范的有效语法
但是,如果在此之前添加了否定运算符,解析将失败,因为50px\9
不会被解释为数字,而是被视为匿名类型
因此,我们必须使用字符串操作和转义来形成输出值。将属性的整个值放在引号内(包括\9
),然后使用~
或e()
函数,这样做会减少将值视为字符串,然后不带引号地输出
#example {
height: 46px;
height: ~"-50px\9";
}
或
编译的CSS:
#example {
height: 46px;
height: -50px\9;
}
参考文献:
#example {
height: 46px;
height: -50px\9;
}
高度:~“-50px\9”
可以解决编译错误。它工作得很好,所以这正是我想要的答案。谢谢负高度是什么意思?@Ronnie:我根据max的评论更新了我的答案,但答案的关键仍然是一样的。留下一条评论,让你记录下这一变化。纠正我自己:到目前为止,我认为这并不是一个真正针对供应商的黑客行为:请参阅。也就是说,从技术上讲,\e
只是一个带有代码9的转义字符(如果我没有弄错的话,因为标准对单个数字代码非常模糊)。但在这种特殊情况下,这意味着50px\9
不会被解释为数字,而是被解释为“匿名类型”,因此尝试将其作为否定表达式的一部分进行解析失败。所以,是的,通常需要将\*
内容放入qoutes中。@seven Phase max:True,同意Less应该将其视为字符串(?)来编译的观点。但是像\9
这样的值在CSS中很少使用,除了用于此类黑客之外,因此我认为这不是一个真正需要优先修复的问题。当然,像\00a0
这样的值在content
属性中使用,但它们不会导致这样的问题。