【问题标题】:Unexpected results when multiplying unitless values in SASS在 SASS 中乘以无单位值时出现意外结果
【发布时间】:2016-08-30 04:37:07
【问题描述】:

我在使用 SASS 为我正在进行的一个独特项目创建一个小型 CSS 框架时偶然发现了一个奇怪的问题。

无需赘述,我将使用 @for 循环创建一系列 10 个 z-index 类。从第一个索引开始,每个z-index 值应该是 10 的倍数。

/* Loop from 1 to 10, creating 10 z-index classes */
@for $i from 1 to 10 {
    .z#{$i} { z-index: ($i * 10) }
}

/* This SHOULD output... */
.z1 { z-index: 10 }
.z2 { z-index: 20 }
.z3 { z-index: 30 }
.z4 { z-index: 40 }
.z5 { z-index: 50 }
.z6 { z-index: 60 }
.z7 { z-index: 70 }
.z8 { z-index: 80 }
.z9 { z-index: 90 }
.z10 { z-index: 100 }

问题:它没有输出我期望的值。相反,我得到了1, 2, 3, etc 的值,而我应该得到10, 20, 30, etc 的值。

如何让它失败 我可以将两个无单位值相乘并得到我期望的结果 line-height。但如果我为z-index 这样做,我会得到奇怪的结果。以下是我如何使此失败的其他一些示例。我包含了 font-sizeline-height 的值,结果符合我的预期。

.example-1 {
    font-size: (16px * 1.5); // outputs 24px
    line-height: (1 * 1.5);  // outputs 1.5
    z-index: (10 * 10);      // should output 100, but it outputs 5
}

.example-2 {
    z-index: (10 * 10);      // outputs 5 (wrong)
    z-index: (10 / 10);      // outputs 1
    z-index: (10 + 10);      // outputs 2 (wrong)
    z-index: (10 - 10);      // outputs 0
}

我觉得很疯狂。有没有其他人遇到过这个问题?

编辑:问题已解决

显然,gulp-cssnano 插件在我的构建过程中缩小了 CSS,导致这种情况发生。默认情况下,gulp-cssnano 将重新设置您的 z-index 值,这并不酷,对其他人来说可能也不应该酷。无论如何,通过将选项 { zindex: false } 传递给对 gulp-cssnano 的调用,这个问题得到了巧妙的解决。

.pipe( cssnano({ zindex: false }) );

【问题讨论】:

  • 我认为你的编译过程有问题。当我在 codepen 中运行您的代码和您的示例测试时,编译后的输出就是您所期望的。
  • 我也开始怀疑编译过程。我正在使用gulp-sassgulp-autoprefixergulp-cssnano 来处理编译、供应商前缀和缩小。我将尝试删除这些依赖项,看看是否会得到不同的结果。
  • 它在 Codepen 中运行良好(单击 SCSS 窗口下拉菜单中的“查看已编译的 CSS”)codepen.io/anon/pen/QEZXxp - 可能与您的编译器有关?

标签: css sass gulp


【解决方案1】:

检查gulp-cssnano 是否通过其优化之一导致问题。

据我所知,cssnanoz-index 进行了优化,并被标记为“不安全”。您可以禁用各种优化或使用 gulp 中的选项对象配置它们。尝试以下方式:

.pipe( 
    nano( {
        zindex: false
    } )
)

【讨论】:

  • 哦,我的错,我的原始代码中正确,但在我的示例中没有# 重新键入它。我用这个固定更新了原始问题。
  • 我使用gulp-sass将SASS编译成CSS,我还使用gulp-autoprefixer注入供应商前缀和gulp-cssnano进行缩小。
  • gulp-cssnano 已被缩小为问题的原因。但是,我目前不知道如何修复它或解决它。
  • 成功!!!谢谢!我不知道cssnano 甚至对我的 z-indexes 大发雷霆……哦,好吧。
  • 我将更新我的答案以反映 cmets 并删除旧 cmets。
猜你喜欢
  • 2021-03-09
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2013-11-07
  • 2015-05-30
  • 1970-01-01
相关资源
最近更新 更多