1. 使用变量;

$highlight-color: #F90;
.selected {
border: 1px solid $highlight-color;
} //编译后 .selected {
border: 1px solid #F90;
}

2. 嵌套CSS 规则;

#content {
article {
h1 { color: #333 }
p { margin-bottom: 1.4em }
}
aside { background-color: #EEE }
}
 /* 编译后 */
#content article h1 { color: #333 }
#content article p { margin-bottom: 1.4em }
#content aside { background-color: #EEE }

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

article a {
color: blue;
&:hover { color: red }
}

 /* 编译后 */
article a { color: blue }
article a:hover { color: red }

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

.container {
h1, h2, h3 {margin-bottom: .8em}
}

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

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

这会减少站点的速度。

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

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

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

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

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

article {
~ article { border-top: 1px dashed #ccc }
> section { background: #eee }
dl > {
dt { color: #333 }
dd { color: #555 }
}
nav + & { margin-top: 0 }
}
article ~ article { border-top: 1px dashed #ccc }
article > footer { background: #eee }
article dl > dt { color: #333 }
article dl > dd { color: #555 }
nav + article { margin-top: 0 }

2-4. 嵌套属性;

nav {
border: {
style: solid;
width: 1px;
color: #ccc;
}
}
 /* 编译后 */
nav {
border-style: solid;
border-width: 1px;
border-color: #ccc;
}

3. 导入SASS文件;

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

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

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

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

3-2. 默认变量值;

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


4. 静默凝视;

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

5. 混合器;

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

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

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


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

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

5-3. 给混合器传參;

@mixin link-colors($normal, $hover, $visited) {
color: $normal;
&:hover { color: $hover; }
&:visited { color: $visited; }
}
a {
@include link-colors(blue, red, green);
} //Sass终于生成的是: a { color: blue; }
a:hover { color: red; }
a:visited { color: green; }

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


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

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

这个通过@extend语法实现


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




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


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. 洛谷P2916 [USACO08NOV]为母牛欢呼(最小生成树)

    P2916 [USACO08NOV]为母牛欢呼Cheering up the C… 题目描述 Farmer John has grown so lazy that he no longer wants ...

  2. [Apple开发者帐户帮助]二、管理你的团队(2)更改团队成员角色

    如果您已加入Apple开发者计划,您将在App Store Connect中管理团队成员.有关详细信息,请转到App Store Connect帮助中的添加和编辑用户. 如果您已加入Apple Dev ...

  3. layui富文本编译器添加图片

    1.创建富文本编辑器 <form class="layui-form" method="post" id="myForm" encty ...

  4. docker(一):docker是什么?

    认识容器:docker入门篇 docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚 ...

  5. [转]RDLC 动态列

    本文转自:http://blog.csdn.net/luochengbang/article/details/9964551 很久没有写博客了,关于动态列,国内很少资料有介绍动态列的,所想写点心得给哥 ...

  6. HBase、Hive、MapReduce、Hadoop、Spark 开发环境搭建后的一些步骤(export导出jar包方式 或 Ant 方式)

    步骤一 若是,不会HBase开发环境搭建的博文们,见我下面的这篇博客. HBase 开发环境搭建(Eclipse\MyEclipse + Maven) 步骤一里的,需要补充的.如下: 在项目名,右键, ...

  7. 5.13Mysql数据库Database

    数据库的基本概念 1.什么是数据库: 用于存储和管理数据的仓库. 2.数据库的特点: 1.持久化存储数据的.其实数据库就是一个文件系统. 2.方便存储和管理数据 3.使用了统一的方式操作数据库---s ...

  8. Hadoop学习笔记(一)Hadoop的单节点安装

    要想深入学习Hadoop分布式文件系统,首先需要搭建Hadoop的实验环境,Hadoop有两种安装模式,即单节点集群模式安装(也称为伪分布式)和完全分布式模式安装,本节只介绍单节点模式的安装,参考官方 ...

  9. HTML 5概述

    HTML语言是一种简易的文件交换标准,用于物理的文件结构,它旨在定义文件内的对象和描述文件的逻辑结构,而并不定义文件的显示.由于HTML所描述的文件具有极高的适应性,所以特别适合于WWW的出版环境. ...

  10. Unity引擎GUI之Button

    UGUI Button,可以说是真正的使用最广泛.功能最全面.几乎涵盖任何模块无所不用无所不能的组件,掌握了它的灵巧使用,你就几乎掌握了大半个UGUI! 一.Button组件: Interactabl ...