Sass - 连接到@ at-root选择器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sass - 连接到@ at-root选择器相关的知识,希望对你有一定的参考价值。

我正在使用@ at-root相当多(因为类是动态添加并从主体中删除),我想知道下面的内容是否可行?

header.main {
    @at-root body[class*="contact"] #{&}, body.text-single #{&} {
        background-color: white;
        &.header-is--hidden {
            background-color: red; // I know this won't work
        }
    }
}

而不是必须写:

header.main {
    @at-root body[class*="contact"] #{&}, body.text-single #{&} {
        background-color: white;
    }
    @at-root body[class*="contact"].header-is--hidden #{&}, body.text-single.header-is--hidden #{&} {
        background-color: red;
    }
}
答案

我想知道下面的东西是否可能?

是的

您可以将header.main选择器保存在变量中,并使用插值将其渲染出来 - 如:

header.main {
  $sel: &;  //  contains header.main

  @at-root body[class*="contact"], body.text-single {
    #{$sel} {
      background-color: white;
    }
    &.header-is--hidden #{$sel} {
      background-color: red;
    }
  }
}

CSS输出

body[class*="contact"] header.main, 
body.text-single header.main {
  background-color: white;
}
body[class*="contact"].header-is--hidden header.main, 
body.text-single.header-is--hidden header.main {
  background-color: red;
}
另一答案

我想知道下面的东西是否可能?

是的

您可以将header.main选择器保存在变量中,并使用插值将其渲染出来 - 如:

header.main {
  $sel: &;  //  contains header.main

  @at-root body[class*="contact"], body.text-single {
    #{$sel} {
      background-color: white;
    }
    &.header-is--hidden #{$sel} {
      background-color: red;
    }
  }
}

CSS输出

body[class*="contact"] header.main, 
body.text-single header.main {
  background-color: white;
}
body[class*="contact"].header-is--hidden header.main, 
body.text-single.header-is--hidden header.main {
  background-color: red;
}

以上是关于Sass - 连接到@ at-root选择器的主要内容,如果未能解决你的问题,请参考以下文章

sass的@at-root

SASS @at-root,然后 LESS 啥来实现同样的功能

将下拉选择器连接到数据库

用secureCRT连接到华为EPON上面时是一片空白的,为啥?

Sass--嵌套选择器

sass