CSS预处理语言:Sass
2016-06-21 17:34
633 查看
CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。
到目前为止,在众多优秀的 CSS 预处理器语言中就属 Sass、LESS 和 Stylus 最优秀
Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:
(1)文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名
(2)语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。
先来看一个示例:
Sass 语法
SCSS 语法
编译出来的 CSS
在书写 Sass 时不带有大括号和分号,其主要是依靠严格的缩进方式来控制的。
SCSS 是 Sass 的新语法格式,从外形上来判断他和 CSS 长得几乎是一模一样,代码都包裹在一对大括号里,并且末尾结束处都有一个分号。其文件名格式常常以“.scss”为扩展名。这样的语法格式对于从事前端工作的同学来说更易于接受,这也是 SCSS 为什么更被前端人员青眯的原因。
以下代码都用SCSS
安装:
在 Windows 平台下安装 Ruby 需要先有 Ruby 安装包,大家可以到 Ruby 的官网(http://rubyinstaller.org/downloads)下载对应需要的 Ruby 版本。Ruby 安装文件下载好后,可以按应用软件安装步骤进行安装 Ruby。在安装过程中,个人建议将其安装在 C 盘下,在安装过程中选择第二个选项;Ruby 安装完成后,在开始菜单中找到新安装的 Ruby,并启动 Ruby 的 Command 控制面板;打开电脑的命令终端,输入下面的命令:
gem install sass
一:Sass 编译过程
使用 Sass 进行开发,项目中还是引用“.css”文件,Sass 只不过是做为一个预处理工具,提前帮你做事情,只有你需要时候,他才有攻效。
这样一来,也就有了要学习的内容—— Sass 的编译。因为 Sass 开发之后,要让 Web 页面能调用 Sass 写好的东西,就得有这么一个过程,这个过程就称之为 Sass 编译过程。Sass 的编译有多种方法:
命令编译、GUI工具编译、自动化编译
1 . 命令编译是指使用你电脑中的命令终端,通过输入 Sass 指令来编译 Sass。这种编译方式是最直接也是最简单的一种方式。
单文件编译:
这是对一个单文件进行编译,如果想对整个项目所有 Sass 文件编译成 CSS 文件,可以这样操作:
多文件编译:
上面的命令表示将项目中“sass”文件夹中所有“.scss”(“.sass”)文件编译成“.css”文件,并且将这些 CSS 文件都放在项目中“css”文件夹中。
缺点及解决方法:
在实际编译过程中,你会发现上面的命令,只能一次性编译。每次个性保存“.scss”文件之后,都得重新执行一次这样的命令。如此操作太麻烦,其实还有一种方法,就是在编译 Sass 时,开启“watch”功能,这样只要你的代码进行任保修改,都能自动监测到代码的变化,并且给你直接编译出来:
2 . GUI 界面工具编译
我比较推荐使
Koala (http://www.w3cplus.com/preprocessor/sass-gui-tool-koala.html)
3 .自动化编译
Grunt 和 Gulp ,也可以通过他们来配置 Sass 的编译。
http://www.imooc.com/learn/30
注意:在Sass的编译的过程中,是不是支持“GBK”编码的。所以在创建 Sass 文件时,就需要将文件编码设置为“utf-8”。
另外一个错误就是路径中的中文字符引起的。建议在项目中文件命名或者文件目录命名不要使用中文字符。
二. 输出方法
1.嵌套输出方式
在编译的时候带上参数“ –style nested”:
编译出来的 CSS 样式风格:
2.展开输出方式 expanded
在编译的时候带上参数“ –style expanded”:
这个输出的 CSS 样式风格和 nested 类似,只是大括号在另起一行,同样上面的代码,编译出来:
3.紧凑输出方式 compact
在编译的时候带上参数“ –style compact”:
该方式适合那些喜欢单行 CSS 样式格式的朋友,编译后的代码如下:
4.压缩输出方式 compressed
在编译的时候带上参数“ –style compressed”:
压缩输出方式会去掉标准的 Sass 和 CSS 注释及空格。也就是压缩好的 CSS 代码样式风格:
只要你的浏览器支持“sourcemap”功能即可。早一点的版本,需要在编译的时候添加“–sourcemap” 参数:
在 Sass3.3 版本之上(我测试使用的版本是 3.4.7),不需要添加这个参数也可以:
三、Scss的基本特性-基础
1.声明变量:美元符号“”开头Sass的变量包括三个部分:声明变量的符号“”、变量名称、赋予变量的值
2.调用:定义之后可以在全局范围内使用。
3.全局变量与局部变量
全局变量就是定义在元素外面的变量,定义在元素内部的变量是一个局部变量。
css 的结果:
4.嵌套-选择器嵌套
到目前为止,在众多优秀的 CSS 预处理器语言中就属 Sass、LESS 和 Stylus 最优秀
Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:
(1)文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名
(2)语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。
先来看一个示例:
Sass 语法
$font-stack: Helvetica, sans-serif //定义变量 $primary-color: #333 //定义变量 body font: 100% $font-stack color: $primary-color
SCSS 语法
$font-stack: Helvetica, sans-serif; $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; }
编译出来的 CSS
body { font: 100% Helvetica, sans-serif; color: #333; }
在书写 Sass 时不带有大括号和分号,其主要是依靠严格的缩进方式来控制的。
SCSS 是 Sass 的新语法格式,从外形上来判断他和 CSS 长得几乎是一模一样,代码都包裹在一对大括号里,并且末尾结束处都有一个分号。其文件名格式常常以“.scss”为扩展名。这样的语法格式对于从事前端工作的同学来说更易于接受,这也是 SCSS 为什么更被前端人员青眯的原因。
以下代码都用SCSS
$font-stack: Helvetica, sans-serif; $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; }
安装:
在 Windows 平台下安装 Ruby 需要先有 Ruby 安装包,大家可以到 Ruby 的官网(http://rubyinstaller.org/downloads)下载对应需要的 Ruby 版本。Ruby 安装文件下载好后,可以按应用软件安装步骤进行安装 Ruby。在安装过程中,个人建议将其安装在 C 盘下,在安装过程中选择第二个选项;Ruby 安装完成后,在开始菜单中找到新安装的 Ruby,并启动 Ruby 的 Command 控制面板;打开电脑的命令终端,输入下面的命令:
gem install sass
一:Sass 编译过程
使用 Sass 进行开发,项目中还是引用“.css”文件,Sass 只不过是做为一个预处理工具,提前帮你做事情,只有你需要时候,他才有攻效。
这样一来,也就有了要学习的内容—— Sass 的编译。因为 Sass 开发之后,要让 Web 页面能调用 Sass 写好的东西,就得有这么一个过程,这个过程就称之为 Sass 编译过程。Sass 的编译有多种方法:
命令编译、GUI工具编译、自动化编译
1 . 命令编译是指使用你电脑中的命令终端,通过输入 Sass 指令来编译 Sass。这种编译方式是最直接也是最简单的一种方式。
单文件编译:
sass <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css
这是对一个单文件进行编译,如果想对整个项目所有 Sass 文件编译成 CSS 文件,可以这样操作:
多文件编译:
sass sass/:css/
上面的命令表示将项目中“sass”文件夹中所有“.scss”(“.sass”)文件编译成“.css”文件,并且将这些 CSS 文件都放在项目中“css”文件夹中。
缺点及解决方法:
在实际编译过程中,你会发现上面的命令,只能一次性编译。每次个性保存“.scss”文件之后,都得重新执行一次这样的命令。如此操作太麻烦,其实还有一种方法,就是在编译 Sass 时,开启“watch”功能,这样只要你的代码进行任保修改,都能自动监测到代码的变化,并且给你直接编译出来:
sass --watch <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css 如:sass --watch sass/bootstrap.scss:css/bootstrap.css
2 . GUI 界面工具编译
我比较推荐使
Koala (http://www.w3cplus.com/preprocessor/sass-gui-tool-koala.html)
3 .自动化编译
Grunt 和 Gulp ,也可以通过他们来配置 Sass 的编译。
http://www.imooc.com/learn/30
注意:在Sass的编译的过程中,是不是支持“GBK”编码的。所以在创建 Sass 文件时,就需要将文件编码设置为“utf-8”。
另外一个错误就是路径中的中文字符引起的。建议在项目中文件命名或者文件目录命名不要使用中文字符。
二. 输出方法
1.嵌套输出方式
在编译的时候带上参数“ –style nested”:
sass --watch test.scss:test.css --style nested
nav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } }
编译出来的 CSS 样式风格:
nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
2.展开输出方式 expanded
在编译的时候带上参数“ –style expanded”:
sass --watch test.scss:test.css --style expanded
这个输出的 CSS 样式风格和 nested 类似,只是大括号在另起一行,同样上面的代码,编译出来:
nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
3.紧凑输出方式 compact
在编译的时候带上参数“ –style compact”:
sass --watch test.scss:test.css --style compact
该方式适合那些喜欢单行 CSS 样式格式的朋友,编译后的代码如下:
nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
4.压缩输出方式 compressed
在编译的时候带上参数“ –style compressed”:
sass --watch test.scss:test.css --style compressed
压缩输出方式会去掉标准的 Sass 和 CSS 注释及空格。也就是压缩好的 CSS 代码样式风格:
nav ul{margin:0;padding:0;list-style:none}nav li{display:inline-block}nav a{display:block;padding:6px 12px;text-decoration:none}
只要你的浏览器支持“sourcemap”功能即可。早一点的版本,需要在编译的时候添加“–sourcemap” 参数:
sass --watch --scss --sourcemap style.scss:style.css
在 Sass3.3 版本之上(我测试使用的版本是 3.4.7),不需要添加这个参数也可以:
sass --watch style.scss:style.css
三、Scss的基本特性-基础
1.声明变量:美元符号“”开头Sass的变量包括三个部分:声明变量的符号“”、变量名称、赋予变量的值
$btn-primary-color : #fff !default;//Bootstrap 定义 primarybutton 的颜色
2.调用:定义之后可以在全局范围内使用。
$fontSize: 12px; body{ font-size:$fontSize; }
3.全局变量与局部变量
全局变量就是定义在元素外面的变量,定义在元素内部的变量是一个局部变量。
$color: orange !default;//定义全局变量 .block { color: $color;//调用全局变量 } em { $color: red;//定义局部变量 a { color: $color;//调用局部变量 } } span { color: $color;//调用全局变量 }
css 的结果:
//CSS .block { color: orange; } em a { color: red; } span { color: orange; }
4.嵌套-选择器嵌套
相关文章推荐
- 巧妙利用CSS3实现太阳系行星公转运动轨迹
- CSS miscellany 整理
- CSS 文本超出指定宽度后隐藏并显示为省略号鼠标移上显示全文
- CSS学习(二)
- CSS 页面特效初步
- QT QPushButton 通过stylesheet 设置样式
- 纯CSS绘制三角形(各种角度)
- js修改css样式
- css实现翻转卡片效果
- 使用 CSS 去掉 iPhone 网页上按钮的超大圆角默认样式
- CSS3 counters计数器学习笔记
- 本地或者是koala软件编译less文件为css
- RecyclerView的使用和样式
- hack css编写ie下才生效的css
- CSS小tips
- miaov css基础学习笔记
- select样式
- css权重是什么
- CSS学习(一)
- css3