推荐一个很详细的sass教程:https://www.sass.hk/docs/

在设计网页的时候常常遇到这种情况:一个元素使用的样式与另一个元素完全相同,但又添加了额外的样式。通常会在 HTML 中给元素定义两个 class,一个通用样式,一个特殊样式。假设现在要设计一个普通错误样式与一个严重错误样式,一般会这样写:

 <div class="error seriousError">
Oh no! You've been hacked!
</div>

样式如下

 .error {
border: 1px #f00;
background-color: #fdd;
}
.seriousError {
border-width: 3px;
}

麻烦的是,这样做必须时刻记住使用 .seriousError 时需要参考 .error 的样式,带来了很多不变:智能比如加重维护负担,导致 bug,或者给 HTML 添加无语意的样式。使用 @extend 可以避免上述情况,告诉 Sass 将一个选择器下的所有样式继承给另一个选择器。

.error {
border: 1px #f00;
background-color: #fdd;
}
.seriousError {
@extend .error;
border-width: 3px;
}

上面代码的意思是将 .error 下的所有样式继承给 .seriousErrorborder-width: 3px; 是单独给 .seriousError 设定特殊样式,这样,使用 .seriousError 的地方可以不再使用 .error

其他使用到 .error 的样式也会同样继承给 .seriousError

7.3.6. @extend-Only 选择器 (@extend-Only Selectors)

有时,需要定义一套样式并不是给某个元素用,而是只通过 @extend 指令使用,尤其是在制作 Sass 样式库的时候,希望 Sass 能够忽略用不到的样式。

如果使用普通的 CSS 规则,最后会编译出很多用不到的样式,也容易与其他样式名冲突,所以,Sass 引入了“占位符选择器” (placeholder selectors),看起来很像普通的 id 或 class 选择器,只是 # 或 . 被替换成了 %。可以像 class 或者 id 选择器那样使用,当它们单独使用时,不会被编译到 CSS 文件中。

// This ruleset won't be rendered on its own.
#context a%extreme {
color: blue;
font-weight: bold;
font-size: 2em;
}

占位符选择器需要通过延伸指令使用,用法与 class 或者 id 选择器一样,被延伸后,占位符选择器本身不会被编译。

.notice {
@extend %extreme;
}

编译为

#context a.notice {
color: blue;
font-weight: bold;
font-size: 2em; }

最新文章

  1. IT人生知识分享:博弈论的理性思维
  2. 【C#】 格式化说明符 string.Format WriteLine
  3. eclipse 导入工程报错Unable to execute dex: Multiple dex files define Landroid/annotation/SuppressLint
  4. 用shebang编写一个ssh自动登陆脚本
  5. 如何理解反向传播 Backpropagation 梯度下降算法要点
  6. edmx代码分析
  7. C#单链表(数据结构)
  8. LA 3510 (置换 循环分解) Pixel Shuffle
  9. find tar 压缩第一层目录,用于资料备份。
  10. noip2008(最优贸易)
  11. JavaScript 二进制转文件
  12. 基于Spring Boot和Shiro的后台管理系统FEBS
  13. 003-JSR303校验
  14. FJUT Home_W的拆分序列(DP)题解
  15. 牛客OI周赛4-提高组 C 战争(war)
  16. java中的Object类和其clone()
  17. 【学习笔记】--- 老男孩学Python,day7 python中is 和 == 的区别 encode decode
  18. Python cx_oracle自动化操作oracle数据库增删改查封装,优化返回查询数据
  19. [HNOI2002]营业额统计 Splay tree
  20. OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别 标签: 脸部识别opencv 2017-07-03 21:38 26人阅读

热门文章

  1. Linux学习笔记之一
  2. Replica set 的选举策略之一 (转)
  3. linux系统编程之信号(二)
  4. linux文档与目录结构
  5. python 字符串操作list[::-1]的几种用法
  6. CF553E Kyoya and Train
  7. .net框架-数组(Array)&amp; ArrayList &amp; List
  8. Python3学习(一)
  9. Tensorflow细节-P54-变量
  10. MySQL UTF8 转为 utf8mb4