阅读目录

1. Sass和SCSS的区别

2. @while循环

3. @at-root

4. @content

5. 凸显注释

6. CSS输出样式

7. 重置浏览器样式

8. Sass调试和@debug命令、@warn命令

9. 使用Sass时的注意事项


相关链接:Sass学习笔记前篇

相关链接:Sass关于颜色函数的乐趣

在Sass学习笔记前篇,记载了Sass安装、基本用法、编程语法,在这篇,将补充在前篇未记载的知识。

1. Sass和SCSS的区别

参考链接:http://sass.bootcss.com/docs/scss-for-sass-users/

SCSS是Sass3引入新的语法,其实它们没有什么本质的区别,Sass是以“.sass”后缀为扩展名,SCSS是以“.scss”后缀为扩展名。

Sass与SCSS的语法区别,Sass是以严格的缩进式语法规则来写,不使用大括号和分号;SCSS和CSS一样,要使用大括号和分号。

/* SCSS语法 */
.main {
background-color: #eee;
.container {
background-color: #fff;
color: #222;
}
}
/* Sass语法 */
.main
background-color: #eee
.container
background-color: #fff
color: #222

编译后的CSS样式:

/* SCSS语法 */
.main {
background-color: #eee;
}
.main .container {
background-color: #fff;
color: #222;
}
/* Sass语法 */
.main {
background-color: #eee;
}
.main .container {
background-color: #fff;
color: #222;
}

2. @while循环

在Sass中,除了@for和@each循环外,还支持@while循环。跟其他编程语言类似,语法是while(条件){语句}。Sass是以@来控制命令的,所以需要加符号@。

$i: 1;
@while $i < 3 {
.div-#{$i} {
width: 100px * $i;
}
$i: $i + 1;
}

编译后的CSS样式:

.div-1 {
width: 100px;
}
.div-2 {
width: 200px;
}

3. @at-root

Sass3.3.0新增的功能,可以跳出选择器嵌套的。一般所有的嵌套,都是继承上级选择器的,@at-root就可以跳出所有的上级选择器。

A. @at-root普通

body {
font-size: 12px;
@at-root .div {
background-color: #eee;
}
}

编译后的CSS样式:

body {
font-size: 12px;
}
.div {
background-color: #eee;
}

B. @at-root(without: …)和@at-root(with: …)

@at-root默认只会跳出选择器,@at-root相当于@at-root(without: rule),rule表示常规CSS。

但是@at-root默认是不会跳出@media和@support的,如果想跳出这两个,则将rule改为media或者support,也就是@at-root(without: media)或者@at-root(without: support)。

还有一个@at-root(without: all),也就是字面意思,跳出所有的嵌套,包括media、support和常规CSS。

/* media */
@media print {
.page1 {
width: 40%;
@at-root (without: media) {
.active {
color: red;
}
}
}
}
/* all */
@media print {
.page2 {
width: 40%;
@at-root (without: all) {
.active {
color: red;
}
}
}
}

编译后的CSS样式:

/* media */
@media print {
.page1 {
width: 40%;
}
}
.page1 .active {
color: red;
} /* all */
@media print {
.page2 {
width: 40%;
}
}
.active {
color: red;
}

with或without作用相反,也就是不跳出,如果将Sass代码中的without改为with,编译后的CSS样式为:

/* media */
@media print {
.page1 {
width: 40%;
}
.active {
color: red;
}
}
/* all */
@media print {
.page2 {
width: 40%;
}
.page2 .active {
color: red;
}
}

C. 应用于@keyframe

.myAnimation {
animation: myAnimation 3s;
@at-root {
@keyframes myAnimation {
from{width:0;}
to{width:120px;}
}
}
}

编译后的CSS样式:

.myAnimation {
animation: myAnimation 3s;
}
@keyframes myAnimation {
from {
width: 0;
}
to {
width: 120px;
}
}

4. @content

@content是Sass3.2.0新增的,可以使混合宏@mixin接受一整块样式,接受的样式从@content开始。

@mixin max-screen($res){
@media only screen and ( max-width: $res )
{
@content;
}
} @include max-screen(480px) {
body {
color: red
}
}

编译后的CSS样式:

@media only screen and (max-width: 480px) {
body {
color: red;
}
}


5. 凸显注释

我们从CSS输出样式中,可以看出,只有压缩输出样式compressed,不会对注释输出,其他所有的输出样式的CSS代码都带有注释。

但是有时候,我们想要压缩的CSS文件也有注释,这时候,我们就可以用凸显注释。凸显注释就是在Sass标准注释中加一个感叹号!。例:/*! 凸显注释 */。

/*! 凸显注释 */
.main {
background-color: #eee;
.container {
background-color: #fff;
color: #222;
}
}

编译后的CSS样式:

/*! 凸显注释 */.main{background-color:#eee}.main .container{background-color:#fff;color:#222}

6. CSS输出样式

Sass编译CSS样式风格有四种:nested、expanded、compact、compressed。

A. :nested 嵌套输出方式,默认值

nested是Sass默认的输出方式,它反映了CSS的结构样式和HTML文档结构,缩进的层级反映了嵌套的层级。每个属性都占有一行,每条选择器是根据嵌套的层级缩进的。例如:

.main {
background-color: #eee;
.container {
background-color: #fff;
color: #222;
}
}

编译后的CSS样式:

.main {
background-color: #eee; }
.main .container {
background-color: #fff;
color: #222; }

B. :expanded 正常输出方式,没有缩进的、扩展的

expanded和nested相似,区别就在于缩进,expanded的选择器和闭大括号不会缩进,属性值缩进所属的选择器内。

还是以上面样式为例,编译后的CSS样式:

.main {
background-color: #eee;
}
.main .container {
background-color: #fff;
color: #222;
}

C. :compact 紧密输出方式,单行输出

compact是单行CSS输出方式,一条选择器和它的属性值占一行。

同样以上面样式为例,编译后的CSS样式:

.main { background-color: #eee; }
.main .container { background-color: #fff; color: #222; }

D. :compressed 压缩输出方式,去掉注释及空格

compressed会去掉标准的Sass和CSS注释及空格,选择器和属性值紧挨着输出。

以上面样式为例,编译后的CSS样式:

.main{background-color:#eee}.main .container{background-color:#fff;color:#222}

7. 重置浏览器样式

我们在写CSS时,首先都会引入一段重置浏览器样式的代码,这是因为不同的浏览器对标签的默认样式值不同,,所以我们需要有一套样式表来重置浏览器样式,避免我们写的网页在各个浏览器中造成的显示差异。

  • http://cssreset.com/,该网站有最流行的CSS重置样式表,可以根据自己的需求复制。

还有一种标准化方法,跟重置方法有点不一样,它会使浏览器中不一致的地方标准化,而不是重新修改这些地方。

8. Sass调试和@debug命令、@warn命令

A. @debug命令和@warn命令

@debug伪指令检测错误,并将SassScript表达式值显示到标准错误输出流。@debug命令不会经常用到,但是它在调试自定义混合宏和函数时会起到很大的作用。

@warn命令用户对问题提供警告建议;它将SassScript表达式显示到标准错误输出流。

B. Chrome浏览器调试

未完待续。

C. Firefox浏览器调试

未完待续。

9. 使用Sass时的注意事项

  • 在写Sass代码时就应该注意代码规范
  • 不要嵌套太多层代码,最好不要超过三层
  • 非必须情况下,不要写重复的混合宏
  • 最好按模块书写样式表,再用@import导入主样式文件表

参考链接:http://sass-lang.com/

http://sass.bootcss.com/

http://www.w3cplus.com/sassguide/syntax.html

SASS在线转换器


Sass学习笔记(补充)的更多相关文章

  1. STM32 FSMC学习笔记+补充(LCD的FSMC配置)

    STM32 FSMC学习笔记+补充(LCD的FSMC配置) STM32 FSMC学习笔记 STM32 FSMC的用法--LCD

  2. Sass学习笔记之入门篇

    Sass又名SCSS,是CSS预处理器之一,,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样 ...

  3. Sass学习笔记

    语法 @each $var in <list>//循环就是去遍历一个列表,然后从列表中取出对应的值 @while $types > 0 //循环直到函数不成立 SASS函数 To-u ...

  4. sass学习笔记1

    less在处理CSS动画时,非常恶心,决定转向sass了.sass诞生得比less早,只是因为它是ruby写的,因此受众面够少.但我们不需要自己下编译器或使用命令行,我们可以koala这神器 首先几个 ...

  5. 菜鸟的 Sass 学习笔记

    介绍 sass 是什么?? 在sass的官网,它是这么形容给自己的 Sass is the most mature, stable, and powerful professional grade C ...

  6. SASS学习笔记!(持续学习中..)

    工具  : koala 学习网址 : http://www.w3cplus.com/sassguide/syntax.html  http://sass-lang.com/documentation/ ...

  7. SASS学习笔记(1)

    序 之前稍微看过SASS的文档,但是由于工作中没有涉及,渐渐的搁置了.最近公司新招来一个热情似火的前端,不管什么技术,不管自己能不能hold住,都提出来用一用再说.这样对我也好,跟着这个哥们混妥妥的长 ...

  8. sass学习笔记2

    今天介绍sass在重用代码时最具威力的两个功能.一个是嵌套(Nesting),一个混合(Mixin). 我们在写CSS通过需要多个后代选择器组合到一起才能定位到目标元素上,而这定义过程,此元素的父元素 ...

  9. SASS学习笔记2 —— 语法

    sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种是scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号.在此也建议使用后缀名为scss的文件,以避免sass ...

随机推荐

  1. poi jsp xls

    poi jsp xls <%@ page language="java" pageEncoding="UTF-8"import="java.ut ...

  2. java设计模式面试考点

    分类(常见的设计模式) 1.创建型模式 a) 工厂模式 b) 抽象工厂模式 c) 单例模式 d) 建造者模式 2.结构型模式 a) 适配器模式 b) 装饰器模式 c) 桥接模式 d) 代理模式 3.行 ...

  3. C++进阶引导

    1.C++的用途和意义 t0185b047e29feffc26.jpg 总体来说,C++作为一门软件开发语言,它的流行度是在减少的.主要原因在于语言的复杂和灵活导致软件开发成本提高,这体现在开发周期和 ...

  4. Nmap绕过防火墙&脚本的使用

    Nmap是用于端口扫描,服务检测,甚至是漏洞扫描等多种功能的强大工具.Nmap从入门到高级覆盖了许多基础的概念和命令,在这篇文章的第二部分,我将提及Nmap一些高级的技术. 防火墙和入侵检测系统(ID ...

  5. Unexpected end of input 和 Unexpected token var 和 Unexpected token ;

    在写jsp的时候使用的一段代码一直调试,出现Unexpected token ; 错误. 所以最后把代码各种精简,得到了如下的测试示例代码 <% String aaa="123&quo ...

  6. Mac OSX 搭建 Apache php mySql phpMyAdmin 开发环境

    基本环境和配置 Mac 系统:  OS X EI Caption  10.11.4 当前Mac用户名: ceshi 需要熟知的几个基本概念和操作: 1. 新建一个终端默认的是路径是: /Users/当 ...

  7. 通过数据,修改金蝶ERP的收料通知单不合格和合格数量,修改生产投料单,委外发出数量

    update POInStockEntry set FAuxNotPassQty=不合格数量 where FInterID=(select FInterID from POInStock where ...

  8. scrapy设置"请求池"

    scrapy设置"请求池" 引言 相信大家有时候爬虫发出请求的时候会被ban,返回的是403错误,这个就是请求头的问题,其实在python发出请求时,使用的是默认的自己的请求头,网 ...

  9. 对象的序列化与反序列化-serialize与unserialize

    1. 简介 对象的序列化的基本概念: 所谓对象的序列化,就是可以把某个对象的属性名称,属性值, 属性类型,类名 以字符串的形式保存到文件中,在你需要的时候可以重新恢复. 对象的反序列化的基本概念, 是 ...

  10. Python数据类型及其方法详解

    Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...