1. 使用变量;

  1. $highlight-color: #F90;
  2. .selected {
  3. border: 1px solid $highlight-color;
  4. }
  5. //编译后
  6. .selected {
  7. border: 1px solid #F90;
  8. }

2. 嵌套CSS 规则;

  1. #content {
  2. article {
  3. h1 { color: #333 }
  4. p { margin-bottom: 1.4em }
  5. }
  6. aside { background-color: #EEE }
  7. }
  1. /* 编译后 */
  2. #content article h1 { color: #333 }
  3. #content article p { margin-bottom: 1.4em }
  4. #content aside { background-color: #EEE }

2-1. 父选择器的标识符&;

  1. article a {
  2. color: blue;
  3. &:hover { color: red }
  4. }
  1.  /* 编译后 */
  1. article a { color: blue }
  2. article a:hover { color: red }

2-2. 群组选择器的嵌套;

  1. .container {
  2. h1, h2, h3 {margin-bottom: .8em}
  3. }
  1.  /* 编译后 */
  1. .container h1, .container h2, .container h3 { margin-bottom: .8em }

你须要特别注意群组选择器的规则嵌套生成的css。尽管sass让你的样式表看上去非常小。但实际生成的css却可能非常大,

这会减少站点的速度。

2-3. 子组合选择器和同层组合选择器:>、+和~;

  1. article section { margin: 5px }
  2. article > section { border: 1px solid #ccc }

>选择一个元素的直接子元素。会选择article下的全部命中section选择器的元素。

+选择器仅仅会选择article下紧跟着的子元素中命中section选择器的元素。

~选择全部跟在article后的同层article元素。无论它们之间隔了多少其它元素。

  1. article {
  2. ~ article { border-top: 1px dashed #ccc }
  3. > section { background: #eee }
  4. dl > {
  5. dt { color: #333 }
  6. dd { color: #555 }
  7. }
  8. nav + & { margin-top: 0 }
  9. }
  1. article ~ article { border-top: 1px dashed #ccc }
  2. article > footer { background: #eee }
  3. article dl > dt { color: #333 }
  4. article dl > dd { color: #555 }
  5. nav + article { margin-top: 0 }

2-4. 嵌套属性;

  1. nav {
  2. border: {
  3. style: solid;
  4. width: 1px;
  5. color: #ccc;
  6. }
  7. }
  1. /* 编译后 */
  1. nav {
  2. border-style: solid;
  3. border-width: 1px;
  4. border-color: #ccc;
  5. }

3. 导入SASS文件;

3-1. 使用SASS部分文件;

那些专门为@import命令而编写的sass文件,并不须要生成相应的独立css文件,这种sass文件称为局部文件。

sass局部文件的文件名称下面划线开头。

举例来说。你想导入themes/_night-sky.scss这个局部文件中的变量,你仅仅需在样式表中写@import"themes/night-sky";

3-2. 默认变量值;

!default用于变量,含义是:假设这个变量被声明赋值了,那就用它声明的值,否则就用这个默认值。


4. 静默凝视;

  1. body {
  2. color: #333; // 这样的凝视内容不会出如今生成的css文件里
  3. padding: 0; /* 这样的凝视内容会出如今生成的css文件里 */
  4. }

5. 混合器;

混合器使用@mixin标识符定义。

当你的样式变得越来越复杂。你须要大段大段的重用样式的代码,独立的变量就没办法应付这样的情况了。

你能够通过sass的混合器实现大段样式的重用。


  1. @mixin rounded-corners {
  2. -moz-border-radius: 5px;
  3. -webkit-border-radius: 5px;
  4. border-radius: 5px;
  5. }
  1. notice {
  2. background-color: green;
  3. border: 2px solid #00aa00;
  4. @include rounded-corners;
  5. }
  6. //sass终于生成:
  1. .notice {
  2. background-color: green;
  3. border: 2px solid #00aa00;
  4. -moz-border-radius: 5px;
  5. -webkit-border-radius: 5px;
  6. border-radius: 5px;
  7. }

实际上,混合器太好用了。一不小心你可能会过度使用。大量的重用可能会导致生成的样式表过大,导致载入缓慢。所以,首先我们将讨论混合器的使用场景,避免滥用。

5-3. 给混合器传參;

  1. @mixin link-colors($normal, $hover, $visited) {
  2. color: $normal;
  3. &:hover { color: $hover; }
  4. &:visited { color: $visited; }
  5. }
  1. a {
  2. @include link-colors(blue, red, green);
  3. }
  4. //Sass终于生成的是:
  5. a { color: blue; }
  6. a:hover { color: red; }
  7. a:visited { color: green; }

这样的形式的传參,參数顺序就不必再在乎了。仅仅须要保证没有漏掉參数就可以:


6. 使用选择器继承来精简CSS;

选择器继承是说一个选择器能够继承为还有一个选择器定义的全部样式。

这个通过@extend语法实现


  1. .error {
  2. border: 1px red;
  3. background-color: #fdd;
  4. }
  5. .seriousError {
  6. @extend .error;
  7. border-width: 3px;
  8. }




值得一提的是。仅仅要你想,你全然能够放心地继承有后代选择器修饰规则的选择器,无论后代选择器多长。
但有一个前提就是。不要用后代选择器去继承。


sass基础教程的更多相关文章

  1. Sass 基础教程

    0. Sass 文件后缀名 sass 有两种后缀名文件:一种后缀名为 sass,不使用大括号和分号:另一种就是我们这里使用的 scss 文件,这种和我们平时写的 css 文件格式差不多,使用大括号和分 ...

  2. 【转】Gulp入门基础教程

    Gulp入门基础教程 原文在此 前言最近流行前端构建工具,苦于之前使用Grunt,代码很难阅读,现在出了Gulp, 真是摆脱了痛苦.发现了一篇很好的Gulp英文教程,整理翻译给大家看看. 为什么使用G ...

  3. matlab基础教程——根据Andrew Ng的machine learning整理

    matlab基础教程--根据Andrew Ng的machine learning整理 基本运算 算数运算 逻辑运算 格式化输出 小数位全局修改 向量和矩阵运算 矩阵操作 申明一个矩阵或向量 快速建立一 ...

  4. <<Bootstrap基础教程>> 新书出手,有心栽花花不开,无心插柳柳成荫

    并非闲的蛋疼,做技术也经常喜欢蛋疼,纠结于各种技术,各种需求变更,还有一个很苦恼的就是UI总是那么不尽人意.前不久自己开源了自己做了多年的仓储项目(开源地址:https://github.com/he ...

  5. Memcache教程 Memcache零基础教程

    Memcache是什么 Memcache是danga.com的一个项目,来分担数据库的压力. 它可以应对任意多个连接,使用非阻塞的网络IO.由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash ...

  6. Selenium IDE 基础教程

    Selenium IDE 基础教程 1.下载安装     a 在火狐浏览其中搜索附件组件,查找 Selenium IDE     b 下载安装,然后重启firefox 2.界面讲解      在菜单- ...

  7. html快速入门(基础教程+资源推荐)

    1.html究竟是什么? 从字面上理解,html是超文本标记语言hyper text mark-up language的首字母缩写,指的是一种通用web页面描述语言,是用来描述我们打开浏览器就能看到的 ...

  8. 转发-UI基础教程 – 原生App切图的那些事儿

    UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...

  9. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

随机推荐

  1. C++ this指针 全部

    在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的.叫做this.它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起      始地址.例如:当调用成员函数a.volume ...

  2. hdu5673-Robot

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=5673 好久没打BC,当时这场过了3题,hack了一个,马马虎虎吧,因为前三个题确实不难. 这个是那场的第 ...

  3. 辨析 singleton 和 prototype

    <bean id="person1" class="com.bean.life.Person"> <property name="n ...

  4. spring整合redis客户端及缓存接口设计

    一.写在前面 缓存作为系统性能优化的一大杀手锏,几乎在每个系统或多或少的用到缓存.有的使用本地内存作为缓存,有的使用本地硬盘作为缓存,有的使用缓存服务器.但是无论使用哪种缓存,接口中的方法都是差不多. ...

  5. web通信之跨文档通信 postMessage

    index.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...

  6. [原创]PM2使nodejs应用随系统启动

    1.安装 npm install pm2 -gd 2.启动 pm2 start ./bin/www 3.pm2 save 4.pm2 startup 5.pm2 save 注:上面几个步骤有几个坑: ...

  7. Linux scp 后台运行传输文件

    Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...

  8. sql server 游标fetch简单用法

    //遍历tmp_check的年份和月份 DECLARE @year ) DECLARE @month ) DECLARE cur CURSOR FOR SELECT nf,yf FROM tmp_ch ...

  9. C#:winform项目在win7,xp32位和64位都能运行

    vs中项目配置管理器活动解决方案平台选择X86平台.

  10. Scala类型系统——高级类类型(higher-kinded types)

    高级类类型就是使用其他类型构造成为一个新的类型,因此也称为 类型构造器(type constructors).它的语法和高阶函数(higher-order functions)相似,高阶函数就是将其它 ...