css - sass 将根类添加到当前选择器

标签 css sass

我在将根类添加到我当前的 sass 选择器之前遇到了问题。我有以下代码:

.cta-two-columns {
  &__text-holder {
    @at-root&#{__inner} {

    // also tried @at-root __inner&{#}
    // and many others like  @at-root__inner

      padding: rem(25px);
    }
  }
}

但这给了我以下信息:

.cta-two-columns__text-holder__inner {
  padding: rem(25px);
}

我不明白上面的内容 - at-root 有什么意义,你也可以这样做 &__inner 因为它给了我与这两件事相同的东西我已经证明我尝试过了

如何获取

.cta-two-columns__text-holder .cta-two-columns__inner {
}

无需诉诸

.cta-two-columns {
  &__text-holder {
    .cta-two-columns__inner {
      padding: rem(25px);
    }
  }
}

或者这是在 sass 中执行此操作的唯一方法?

最佳答案

@at-root 在这种情况下并不像您想象的那样有效。 @at-root 将简单地在嵌套外部进行声明。为了更好地理解,添加另一个 CSS 声明,如下所示:

.cta-two-columns {
  &__text-holder {

    margin: 10px;
    @at-root&#{__inner} {

      padding: rem(25px);
    }
  }
}

这将产生以下 CSS 代码:

.cta-two-columns__text-holder {
  margin: 10px;
}
.cta-two-columns__text-holder__inner {
  padding: rem(25px);
}

简单地想象一下如何在没有 @at-root 的情况下创建选择器,然后将其放在外面。

没有它会产生这个:

.cta-two-columns__text-holder {
  margin: 10px;
}
.cta-two-columns__text-holder .cta-two-columns__text-holder__inner {
  padding: rem(25px);
}

然后我们简单地省略 .cta-two-columns__text-holder


获得所需内容的一个想法是考虑一个变量,您可以在其中声明主类,然后您将能够嵌套任意数量的元素:

$sel: '.cta-two-columns';

#{$sel}__text-holder {
   #{$sel}__inner {
    padding: rem(25px);
  }
}

将产生:

.cta-two-columns__text-holder .cta-two-columns__inner {
  padding: rem(25px);
}

有更多嵌套元素:

$sel: '.cta-two-columns';

#{$sel}__text-holder {
   #{$sel}__outer {
      #{$sel}__inner{
        #{$sel}__wrap{
          padding: rem(25px);
      }
    }
  }
}

将产生

.cta-two-columns__text-holder .cta-two-columns__outer .cta-two-columns__inner .cta-two-columns__wrap {
  padding: rem(25px);
}

关于css - sass 将根类添加到当前选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54694926/

相关文章:

angular - 使用 webpack 和 SCSS 将 Materialize 集成到 Angular2 项目中

html - 高度 CSS 百分比不起作用

css - 对于 <a> 标签设置它的属性 "target",javascript 中 onclick 的正确语法是什么

javascript - 覆盖 :hover on elements under pseudo element

css - meteor 避免服务器重启的实时 css/scss 版本

Css 没有标题填满所有行

sass - Sublime Text : Reindent SCSS files?

css - 如何覆盖过滤器 :blur and box-shadow from parent div on a contained div?

javascript - 使用重复的 div React.JS 切换事件的 CSS 状态

javascript - 在带有缩回地址栏的移动浏览器中使用全高