我试图让我的CSS通过验证,我有很多样式规则,如下所示:
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='../../../public/images/circ_logo_trans_50.png',
sizingMethod='crop')";
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='../../../public/images/circ_logo_trans_50.png',
sizingMethod='crop');
当代码如上所示时,验证器似乎会抛出错误。但是当我删除换行符时,它会通过。
我的理解是-ms-filter
后跟一个带引号的字符串,而filter
则不应该。
到目前为止,我所说的是正确的吗?这个语法有什么不对的吗?
我在尝试缩小CSS sass in.scss:out.css --style compact
时偶然发现了这个问题。当所有代码都在一行上时,最后的样式停止工作,因为前面有一些无效的东西。我很确定它已连接到这些过滤器。
答案 0 :(得分:3)
您对-ms-filter
和filter
属性的理解绝对正确。
CSS的重要问题在于字符串的语法。 spec明确声明字符串不能直接包含换行符。为了在源本身的多行中断一个字符串,只需在每行的末尾添加反斜杠(除了最后一行(发生结束报价)):
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(\
src='../../../public/images/circ_logo_trans_50.png',\
sizingMethod='crop')";
这将允许验证器正确解析您的CSS而不会出现阻塞。它不应该为IE造成问题,因为它试图解析字符串供自己使用;不幸的是,我不能肯定地说它不会。如果它确实有问题,那么你可能需要
请注意,未加前缀的filter
属性对于验证仍然存在问题,因为它是一个不带前缀的非标准属性(前缀为the standard way of declaring non-standard properties,可以这么说)。当然,这是您不必担心的事情,因为您知道您正在使用广泛认可的非标准形式的房产。