Web/02-CSS进阶/Sass入门.md

351 lines
7.3 KiB
Markdown
Raw Normal View History

2018-04-07 23:00:17 +08:00
## Sass简介
大家都知道js 中可以自定义发量css 仅仅是一个标记语言,不是编程语言,因此不可以自定义发量、不可以引用等等。
面对返些问题,我们现在来引入 Sass简单的说他是 css 的升级版,可以自定义发量,可以有 if 语句,还可以嵌套等等,很神奇吧!那下面我们就来介绍返个神奇的 Sass。
Sass比Less的功能更强大也更复杂。
### Sass 的定义
Sass英文是 Syntactically Awesome Stylesheets Sass。最早由 Hampton Catlin 开发和设计。 一种帮助你简化 CSS 工作流程的方式,帮助你更容易维护和开发 CSS 内容。
官网是:<https://sass-lang.com/>
Sass 是这个世界上最成熟、稳定和强大的专业级 CSS 扩展语言。
Sass专注的是怎样创建优雅的样式表而不是内容。
### Sass、Compass与CSS
**关系:**
- Less/Sass是语法、Compass是框架、CSS是目标。
**Sass&Compass的好处**
- 写出更优秀的CSS。
- 解决CSS编写过程中的痛点问题比如精灵图合图、属性的浏览器前缀处理等。
- 有效组织样式、图片、字体等项目元素。
**受众群体:**
- 重构的同学写很多CSS不知如何自动化。
- 希望在项目周期内更好地组织项目内容。
## Sass的安装
sass引擎是用Ruby语言开发的但是两者的语法没有关系因此在安装 Sass 前需要先安装Rubymac下自带Ruby无需再安装Ruby
下面来讲一下 Windows 下的安装Sass的步骤。
### 第一步安装Rubywindows环境
下载地址:<http://rubyinstaller.org/downloads/>
貌似网络很慢,不一定能下载成功~
安装时,记得勾选“环境变量”:
2018-04-09 22:03:58 +08:00
![](http://img.smyhvae.com/20180407_2022.png)
2018-04-07 23:00:17 +08:00
安装完ruby之后在命令行中输入`ruby -v`查看ruby的的版本
2018-04-09 22:03:58 +08:00
![](http://img.smyhvae.com/20180407_2039.png)
2018-04-07 23:00:17 +08:00
### 关于Mac下的Ruby
刚刚说了Mac下自带Ruby但是版本肯定很老
2018-04-09 22:03:58 +08:00
![](http://img.smyhvae.com/20180407_2145.png)
2018-04-07 23:00:17 +08:00
2018-04-09 22:03:58 +08:00
有的时候我们可能需要使用特定版本的ruby或者在不同的ruby版本之间进行切换所以大家可以尝试安装`rvm`它是ruby的版本管理工具。官网是<https://rvm.io>
2018-04-07 23:00:17 +08:00
### 第二步:安装 Sass
安装完ruby之后在开始菜单中找到刚才我们安装的ruby打开Start Command Prompt with Ruby。输入`gem install sass`安装Sass。
PSRuby 是使用 gem 来管理它的各种包比如Sass。我们安装好ruby之后gem会自动安装上类似于我们安装完node之后npm也自动安装好了。
但是由于访问网络受限我们可以先切换到淘宝的镜像再安装Sass。步骤如下
1移除默认的镜像添加淘宝的镜像
```
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/ //注意如果你系统不支持https请将淘宝源更换成gem sources -a http://gems.ruby-china.org
```
PS我测试了一下Win 7 不支持httpsMac支持https。
2查看当前使用的是哪个镜像
```
gem sources -l
```
2018-04-09 22:03:58 +08:00
![](http://img.smyhvae.com/20180407_2050.png)
2018-04-07 23:00:17 +08:00
3安装sass
紧接着输入如下命令安装Sass
```
gem install sass // 如果mac下输入这个命令时没有权限则需要在前面加上 sudo
```
系统会自动安装上最新版本的Sass。
查看sass版本的命令为:
```
sass -v
```
升级sass版本的命令为
```
gem update sass
```
你也可以运行帮助命令行来查看你需要的命令:
```
sass -h
```
2018-04-09 22:03:58 +08:00
![](http://img.smyhvae.com/20180407_2100.png)
2018-04-07 23:00:17 +08:00
参考链接:<https://www.w3cplus.com/sassguide/install.html>
## Compass 简介和安装
安装完sass之后我们在main.scss中写一些代码然后输入如下命令就可以将`scss文件`转化为`css文件`
```
sass main.scss main.css
```
2018-04-09 22:03:58 +08:00
然而,真正的项目开发中,我们不一定是直接使用 sass 命令,而是使用 Compass。
2018-04-07 23:00:17 +08:00
### Compass 简介
官网是:<http://compass-style.org/>
Compass 是开源的CSS书写框架。
### Compass 安装
输入如下命令安装 Compass
```
gem isntall compass
```
输入如下命令查看版本:
```
compass -v
```
2018-04-09 22:03:58 +08:00
![](http://img.smyhvae.com/20180407_2208.png)
2018-04-07 23:00:17 +08:00
compass可以直接用来搭建前端项目的样式部分但并不是常用的方法。
### Compass的简单使用
2018-04-09 22:03:58 +08:00
通过 Compass 创建工程目录:
2018-04-07 23:00:17 +08:00
```
cd workspace
compass create CompassDemo
```
文件结构如下:
- /sass
- ie.scss
- print.scss
- screen.scss
- /stylesheets
- ie.css
- print.css
- screen.css
- config.rb
2018-04-09 22:03:58 +08:00
为了能够让文件实时编译,我们可以通过 copass watch 监听sass文件的变化
```
cd CompassDemo
compass watch
```
当.scss文件改动时会自动生成对应的.css文件。
2018-04-07 23:00:17 +08:00
## Sass的语法
### 两种后缀名(两种语法)
sass 有两种后缀名文件:
2018-04-09 22:03:58 +08:00
1`.sass`:对空格敏感。不使用大括号和分号,所以每个属性之间是通过换行来分隔。
2018-04-07 23:00:17 +08:00
比如:
```
h1
color: #000
background: #fff
```
这种语法是类ruby的语法和CSS的语法相比相差较大。所以在3.0版本中就引入了`.scss`的语法。
2018-04-09 22:03:58 +08:00
2`.scss`是css语法的超级可以使用大括号和分号。
2018-04-07 23:00:17 +08:00
比如:
```
h1 {
color: #000;
background: #fff;
}
```
注意:一个项目中可以混合使用两种语法,但是一个文件中不能同时使用两种语法。
2018-04-09 22:03:58 +08:00
**两种格式之间的转换:**
我们在工程目录下新建`main.scss`,输入如下代码:
```
*{
margin: 0;
padding: 0;
}
```
然后输入如下命令,就可以将上面的`main.scss`转化为`main.sass`
```bash
sass-convert main.scss main.sass
```
打开生成的`main.sass`,内容如下:
```
*
margin: 0
padding: 0
```
### 变量语法
Sass 是通过`$`符号来声明变量。
1我们新建一个文件`_variables.scss`,这个文件专门用来存放变量,然后在其他的文件中引入`_variables.scss`即可。
因为这个文件只需要存储变量,并不需要它编译出对应的 css 文件,所以我们给文件名的前面加了**下划线**,意思是声明为**局部文件**。
我们在这个文件中,声明两个字体变量:
```css
$font1: Braggadocio, Arial, Verdana, Helvetica, sans-serif;
$font2: Arial, Verdana, Helvetica, sans-serif;
```
2新建文件main.scss在里面引入步骤1中的变量文件
```
@import "variables"; // 引入变量文件
.div1{
font-family: $font1;
}
.div2{
font-family: $font2;
}
```
基于 Sass 的既定规则:
- 没有文件后缀名时Sass 会自动添加 .scss 或者 .sass 的后缀(具体要看已经存在哪个后缀的文件)。
- 同一目录下,局部文件和非局部文件不能重名。
对应生成的main.css文件如下
main.css
```css
/* line 9, ../sass/main.scss */
.div1 {
font-family: Braggadocio, Arial, Verdana, Helvetica, sans-serif;
}
/* line 13, ../sass/main.scss */
.div2 {
font-family: Arial, Verdana, Helvetica, sans-serif;
}
```
### 注释语法
单行注释:
```
//我是单行注释
```
块级注释:
```
/*
我是块级注释
哈哈
*/
```
二者的区别是单行注释不会出现在自动生成的css文件中。
2018-04-07 23:00:17 +08:00