css - 创建具有多个类的 Stylus 变量并在编译中连接

标签 css compilation stylus

我的情况是,我想将相同的 CSS 规则分配给多个选择器,通常我使用 Stylus interpolation将多个类分配给一个变量。

pages = '.home, .about, .contact'

{pages}
    a
        color black

这产生:

.home a, .about a, .contact a {
    color: black;
}

但我有一个问题,如果可能的话,我想以一种优雅的方式解决。现在假设我想使用同一个变量与另一个变量连接,例如:

.general
    &{pages}
        a
            background-color black

这会以预期的方式产生:

.general.home a, .general .about a, .general .contact a {
    background-color: black;
}

我想在每种情况下生成一个“双类”选择器,而不仅仅是第一个。为此,我尝试使用有效的迭代方法,但我一点也不满意:

pages = home about contact

.general
    for class in pages
        &.{class}
            a
                color black

这产生:

.general.home a { color: black; }
.general.about a { color: black; }
.general.contact a { color: black; }

这还不错,但是当我想以第一种方式使用相同的变量时(这是我对此变量最常见的用法),我不能,因为它没有使用正确的选择器语法进行编译.

你能想出什么办法来实现这个目标吗?

提前致谢!

最佳答案

您可以将 & 添加到选择器字符串中的每个类:

pages = '&.home, &.about, &.contact'

.general
  {pages}
    a
      color black

甚至自动使用replace bif:

pages = '.home, .about, .contact'

.general
  {replace('\.', '&.', pages)}
    a
      color black

关于css - 创建具有多个类的 Stylus 变量并在编译中连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43200925/

相关文章:

css - react JS : Apply Material-UI CssBaseline

html - 将一张图像居中并在行内 block 中将一张图像向左对齐

CSS动画表现

css - 无法在 Chrome 中使用 @font-face 在 Stylus 中定义的类中呈现字体

css - css 字体属性的 Stylus 变量

css - 手写笔不允许样式生效

php - 在我的网站中自定义 RSS 提要

c++ - 有什么理由不从可执行文件中删除符号吗?

php - 在 MAMP 3.0.2 上启用 ZTS

java - java中+=的表现