我正在设置一个 SCSS mixin 来自动化高清屏幕的媒体查询语法。我的 SCSS 是通过 Codekit 编译的,编译后应用了 AutoPrefixer。mixin 包含多个媒体查询,每个查询都针对不同的屏幕分辨率。我在每个媒体查询中使用的语法如下:
@media only screen and (-o-min-device-pixel-ratio: 4/5),
only screen and (-webkit-min-device-pixel-ratio: 1.25),
only screen and (min--moz-device-pixel-ratio: 1.25),
only screen and (min-device-pixel-ratio: 1.25),
only screen and (min-resolution: 1.25dppx),
only screen and (min-resolution: 120dpi) {
// my styles
}
此语法重复多次,并根据需要调整数字以针对不同的分辨率。它编译得很好,在 AutoPrefixer 工作后它很神奇,我得到了以下编译输出:
@media only screen and (-webkit-min-device-pixel-ratio: 1.25),
only screen and (min--moz-device-pixel-ratio: 1.25),
only screen and (min-device-pixel-ratio: 1.25),
only screen and (min-resolution: 1.25dppx),
only screen and (min-resolution: 120dpi) {
// my styles
}
除了删除了 Opera 前缀之外,这几乎与输入相同。伟大的。除了一种情况。由于我无法理解的原因,当涉及到我的 x2 比率代码块时,AutoPrefixer 插入了一个奇怪的额外行。这是我在AutoPrefixed之前编译的输入:
@media only screen and (-o-min-device-pixel-ratio: 2 / 1),
only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min--moz-device-pixel-ratio: 2),
only screen and (min-device-pixel-ratio: 2),
only screen and (min-resolution: 2dppx),
only screen and (min-resolution: 194dpi) {
// my styles
}
这是 AutoPrefixed 输出:
@media only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min--moz-device-pixel-ratio: 2),
only screen and (min-device-pixel-ratio: 2),
only screen and (min-resolution: 2dppx),
only screen and (-webkit-min-device-pixel-ratio: 2.0208333333333335),
only screen and (min-resolution: 194dpi) {
// my styles
}
您可以看到问题:AutoPrefixer 添加了第二个 -webkit-min-device-pixel-ratio 条件,其怪异值为 2.0208333333333335。媒体查询已经有一个 -webkit-min-device-pixel-ratio 条件,所以这个额外的条件与它直接冲突。奇怪的是,它只在 x2 查询上执行此操作。其他查询,都具有相同的复制和粘贴语法,没有得到这个奇怪的额外规则。
谁能解释一下并告诉我如何避免它(除了不使用 AutoPrefix)。