sass学习(一):变量、嵌套与导入
来源:互联网 发布:淘宝虚拟产品有哪些 编辑:程序博客网 时间:2024/06/17 14:00
一 使用变量
sass使用的一大好处就是可以使用变量,对于那些重复使用的属性,可以通过变量名来引用。
1.变量声明
sass中变量通过$来声明,书写方法与CSS相似,属性值可以使用空格和逗号进行分割。与CSS属性不同的是,其变量可以声明在规则块外,在规则块内部声明的变量只能在本规则块内使用。举例如下:
$nav-color: #F90;nav { $width: 100px; width: $width; color: $nav-color;}//编译后nav { width: 100px; color: #F90;}
2.变量引用
CSS标准值可以存在的地方变量就可以引用,CSS生成时,变量会被他们的值所替代。
3.变量名中的下划线
变量名中的中划线与下划线是相互兼容的,也就是说,当声明变量为a-b时,使用a_b也可以进行引用,但是这个规则对于纯CSS来说如id,class名是不适用的。
二 嵌套规则
1.普通嵌套
sass提供嵌套规则,在CSS中,对于某一块的样式设定常常需要写很多遍,但是使用嵌套会使得要是设置更加清晰,避免了重复书写,可读性高,当被解析为CSS时,便会将嵌套恢复成CSS对应的样式,举例如下:
#content { article { h1 { color: #333 } p { margin-bottom: 1.4em } } aside { background-color: #EEE }}大多数情况下我们都可以使用嵌套,它在解析时将父选择器加一个空格放在子选择器的前面,但存在伪类如:hover时,则需要特殊处理。
2.父选择器&
有时我们不希望后代选择器生成这种连接,比如下面这种情况sass就无法工作:
article a { color: blue; :hover { color: red }}解决这种问题的办法是使用一种特殊的sass选择器,即父选择器,他是用&符号,可以放在选择器可放置的地方,可以解开嵌套规则的控制,他不会像后代选择器进行拼接,而是直接使用父选择器直接替换&。
3.群组选择器的嵌套
当在同一个容器元素里需要对群组进行样式设置时,使用嵌套可以减少代码量,举例如下:
.container { h1, h2, h3 {margin-bottom: .8em}}
nav, aside { a {color: blue}}
4.子组合选择器和同层组合选择器
使用>表示选择子代,使用+选择相邻的同层元素,使用~选择同层选择器,在嵌套中可以自由的选择使用以上选择器,举例如下:article { ~ article { border-top: 1px dashed #ccc } > section { background: #eee } dl > { dt { color: #333 } dd { color: #555 } } nav + & { margin-top: 0 }}
5.属性嵌套
除了选择器,属性也可以嵌套编写,对于border-width,border-color等属性,在sass中只需要写一次border,嵌套属性的规则是这样的:把属性名从中划线-的地方断开,在根属性后边添加一个冒号:,紧跟一个{ }块,把子属性部分写在这个{ }块中。就像css选择器嵌套一样,sass会把你的子属性一一解开,把根属性和子属性部分通过中划线-连接起来,最后生成的效果与你手动一遍遍写的css样式一样:
nav { border: { style: solid; width: 1px; color: #ccc; }}
三导入sass文件
sass可以使结构更加清晰,减少代码重复编写的同时增加了代码的可读性,但当代码的量比较大时,就会变得不那么清晰,故而可以拆开成多个样式文件,css与sass都有@import规则,即从外部引入其他的样式,差别是,css在运行到@import时,才会从外部加载css,这会使得网页加载速度变慢,而sass会在当时直接加载外部文件。1.sass局部文件
有时我们并不需要把所有的sass文件转换为单独的css文件,对于不想转换成为css文件的,可将其文件名前加上下划线,当@import一个文件时,可以不写其全名,直接写下划线后面的部分。
2.默认变量值
sass的同一变量若声明多次,则后面的样式会覆盖前面的样式,我们可以使用!default的方式,将某一样式声明为默认样式,当导入文件对这一变量有赋值时,则其为所赋值,否则为默认值。
3.嵌套导入
跟原生的css不同,sass允许@import命令写在css规则内。这种导入方式下,生成对应的css文件时,局部文件会被直接插入到css规则内导入它的地方。
4.原生导入
sass通常会在@import处以sass格式导入文件,也可以兼容css,当以下三种情况出现时,会以原生的方式导入,这会造成浏览器的额外下载:
1)文件后缀是.css;2)被导入的文件是一个url地址;3)被导入的文件是url()的值。
- sass学习(一):变量、嵌套与导入
- Sass基础--变量与导入
- sass 学习笔记(一):嵌套,变量,operation。。。基本就是翻译了一遍官网
- sass基础语法--嵌套与继承
- sass实战演练02 - 嵌套、mixin、变量计算、颜色函数
- Sass变量、嵌套、混和宏、继承、占位符
- sass变量
- SASS学习系列之(一)--------- SASS,SCSS环境搭建(Ruby)
- Sass学习之路(6)——嵌套
- PHP 之局部变量与全局变量的交错(一)嵌套for循环中的变量
- sass笔记之嵌套
- Sass的嵌套
- Sass嵌套的使用
- Sass嵌套属性
- sass嵌套CSS 规则;
- Sass语法--嵌套
- Python学习(一)函数定义、使用与嵌套
- Python学习(一)----变量与赋值
- @Scope(value="prototype")
- 从最大似然到EM算法浅解
- MySQL——修改root密码的4种方法(以windows为例)
- 【opencv3.3】VS2015+opencv3.3 GPU模块编译(包含opencv_contrib模块)
- xrange 与 range 的 区别
- sass学习(一):变量、嵌套与导入
- 有关IO流的部分整理
- 9行代码让你App内的Fragment对重叠说再见
- JavaScript---数据类型
- 数学题
- Elastic Job Cloud 使用篇(1)
- 11.14课后作业-完成table.html中删除行、添加行的功能。
- 哈佛结构和冯·诺依曼结构的区别
- 通过RestClient访问restAPI接口