如何停止 sass/compass 在媒体查询中将 "not print" 评估为 "false"
How to stop sass/compass evaluating "not print" in media query as "false"
如您所见,sass/compass 解析 not print 并将其变为 false - 破坏了媒体查询。
$ cat test.scss
@media (not print) and (min-width: 600px) {
color: #000;
}
$ sass test.scss
@media (false) and (min-width: 600px) {
color: #000;
}
我试过用unquote
但是它也不配合
你不能。
Sass原因
当Sass遇到括号时,它会尝试计算内容。 not 关键字用于否定,因此当它看到 not print
时,计算结果为 false
.
因此,您尝试使用字符串 'not'
。如果它位于 other 除了媒体查询之外的任何地方,它都可以工作。
.foo { color: (#{'not'} #000); }
评估为
.foo {
color: not #000;
}
媒体查询 在 Sass 中被特殊处理,并且必须遵守媒体查询的一般格式。
CSS原因
即使您可以生成所需的CSS,它也是无效的。如果您阅读了用作参考的 MDN 页面,它指定了以下内容:
The not keyword cannot be used to negate an individual feature query, only an entire media query
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries
所以不,无法指定您的样式将由最小视口宽度为 600 像素的设备使用并且不会打印。
如您所见,sass/compass 解析 not print 并将其变为 false - 破坏了媒体查询。
$ cat test.scss
@media (not print) and (min-width: 600px) {
color: #000;
}
$ sass test.scss
@media (false) and (min-width: 600px) {
color: #000;
}
我试过用unquote
但是它也不配合
你不能。
Sass原因
当Sass遇到括号时,它会尝试计算内容。 not 关键字用于否定,因此当它看到 not print
时,计算结果为 false
.
因此,您尝试使用字符串 'not'
。如果它位于 other 除了媒体查询之外的任何地方,它都可以工作。
.foo { color: (#{'not'} #000); }
评估为
.foo {
color: not #000;
}
媒体查询 在 Sass 中被特殊处理,并且必须遵守媒体查询的一般格式。
CSS原因
即使您可以生成所需的CSS,它也是无效的。如果您阅读了用作参考的 MDN 页面,它指定了以下内容:
The not keyword cannot be used to negate an individual feature query, only an entire media query
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries
所以不,无法指定您的样式将由最小视口宽度为 600 像素的设备使用并且不会打印。