首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >难以理解@extend in Sass ...

难以理解@extend in Sass ...
EN

Stack Overflow用户
提问于 2013-09-17 15:12:32
回答 2查看 97关注 0票数 2

注意:这是我在codeschool.com上的一个在线课程的例子……

所以在_buttons.scss文件中有这样的代码

代码语言:javascript
复制
.btn-a {
   background: #777;
   border: 1px solid #ccc;
   font-size: 1em;
   text-transform: uppercase;
}
.btn-b {
   @extend .btn-a;
   background: #ff0;
}
.sidebar .btn-a {
   text-transform: lowercase;
}

然后,application.css中的输出CSS为

代码语言:javascript
复制
.btn-a,
.btn-b {
   background: #777;
   border: 1px solid #ccc;
   font-size: 1em;
   text-transform: uppercase;
}
.btn-b {
   background: #ff0;
}
.sidebar .btn-a,
.sidebar .btn-b {
   text-transform: lowercase;
}

关于我的问题。我不明白为什么application.css获得了.sidebar .btn-b部分。我认为这是一个需要理解的非常重要的概念,因为这个示例被用来引入占位符选择器。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-09-17 15:53:30

看起来.btn-b获得了为.btn-a声明的所有样式,而不管它们被声明的顺序如何。

我已经尝试过了,并提出了一个替代方案:

萨斯

代码语言:javascript
复制
.btn{
   background: #777;
   border: 1px solid #ccc;
   font-size: 1em;
   text-transform: uppercase;
}
.btn-a {
    @extend .btn;
text-transform: lowercase;
}
.btn-b {
   @extend .btn;
   background: #ff0;
}

CSS

代码语言:javascript
复制
.btn, .btn-a, .btn-b {
  background: #777;
  border: 1px solid #ccc;
  font-size: 1em;
  text-transform: uppercase;
}

.btn-a {
  text-transform: lowercase;
}

.btn-b {
  background: #ff0;
}

这引入了一个.btn (可以被称为anything)的虚拟类,这个类当然不会被使用,但它确实为你的其他按钮提供了“构建块”。

票数 2
EN

Stack Overflow用户

发布于 2013-09-20 05:16:28

当你扩展一个类时,基本上就是在使用该类的任何地方添加选择器。

代码语言:javascript
复制
.class {}
.wrapper .class {}

.extender {
  @extend .class;
}

生成:

代码语言:javascript
复制
.class,
.extender {}
.wrapper .class,
.wrapper .extender {}

解决这个问题的最好方法是使用占位符选择器。

代码语言:javascript
复制
%class,
.class {}
.wrapper .class {}

.extender {
  @extend %class;
}

这将生成:

代码语言:javascript
复制
.extender,
.class {}
.wrapper .class {}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18843512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档