Sass ,Scss 简单教程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sass ,Scss 简单教程相关的知识,希望对你有一定的参考价值。

参考技术A Sass 是对 CSS 的扩展,让 CSS 语言更强大、优雅。 它允许你使用 变量 、 嵌套规则 、 mixins 、 导入 等众多功能, 并且完全兼容 CSS 语法。 Sass 有助于保持大型样式表结构良好, 同时也让你能够快速开始小型项目, 特别是在搭配 Compass 样式库 一同使用时。

第一步安装 Sass gem:

如果你使用的是 Windows, 就需要先 安装 Ruby 。
如果要在命令行中运行 Sass ,只要输入

你还可以命令 Sass 监视文件的改动并更新 CSS :

如果你的目录里有很多 Sass 文件,你还可以命令 Sass 监视整个目录:

使用 sass --help 可以列出完整的帮助文档。
SASS提供四个 编译风格 的选项:

生产环境当中,一般使用最后一个选项。

SASS的官方网站,提供了一个 在线转换器 。可以进行练习。

SASS允许使用变量

SassScript 还支持所有其他 CSS 属性值类型, 例如 Unicode 范围和 !important 声明。 然而,它不会对这些类型做特殊处理。 它们只会被当做不带引号的字符串看待。

编译后

如果变量需要镶嵌在字符串之中,就必须需要写在#之中。

支持数字的标准运算(加 +、减 -、乘 *、除 /和取模 %),数字也支持关系运算(<、>、<=、>=), 等式运算(==、!=)被所有数据类型支持。

编译后

所有算数运算都支持颜色值, 并且是分段运算的。 也就是说,红、绿、蓝各颜色分量会单独进行运算。 例如:

编译后

编译后

编译后

Mixins允许您定义可以在整个样式表中重新使用的样式

编译后

编译后

编译后

完整的案例: https://github.com/xiedajian/jsGrocery/blob/master/Sass%2CScss-demo/index.scss
编译后: https://github.com/xiedajian/jsGrocery/blob/master/Sass%2CScss-demo/index.css
参考:
阮一峰老师的SASS用法指南
SASS官方参考手册

sass笔记

前情提要: sass是一个css预处理工具,使开发者在css也可以定义变量,嵌套,继承,进行简单的运算,制定简单的逻辑等等。并且,完全兼容css3。

sass有两种语法,sass和scss。scss的书写更接近于css,scss文件以.scss为扩展名。sass不用大括号和分号来分割代码块和语句,它是通过缩进来表示类与类的嵌套,通过换行来分隔属性,sass文件以.sass为扩展名。本文主要介绍scss语法。

1、导入

在导入时,如果将css文件导入scss文件,不进行编译,无任何特殊处理,如果导入sass文件,将会把所有被导入的scss文件编译入导入的那个文件。通常,被导入的scss文件以_开头,文件的后缀名在导入时可以省略,如“@import ‘_sassFileName.scss’;”可以简写成“@import ‘sassFileName’;”

2、注释

多行注释/**/,单行注释//,需要注意的是,单行注释不会被转译到对应的css文件中,多行注释是会的。

 

   在压缩输出模式下 (compressed),不会将注释转译到css中,可以将多行注释的第一个字母改为 !,便于添加版权信息。

3、变量

Scss中的变量可以分为几类,普通变量,默认变量,特殊变量,多值变量,全局变量等。

3.1普通变量

   普通变量由$标识,后面紧跟变量名称,没有空格符,然后用:分隔,后面加变量值。例如:$white: #ffffff;。使用

3.2默认变量

   默认变量即在普通变量的值后面加上!default;例如:!default;   这里需要注意的是,默认变量都是用来设置默认值的,如需更改,进行覆盖即可,在默认变量的声明之前重新声明一次,多用于组件化;在默认变量之后声明就是普通的覆盖。

3.3特殊变量

变量在使用时,当需要变量拼接、作为属性、输出到注释中去或者应用于复杂属性时,需要用#{}包裹一下。实例:

$direction:top;

border-#{$direction}: 20px;

3.4多值变量

   多值变量分为list和map型,list类似于数组,map类似于对象。

   3.4.1 list

   示例://一维数据 $px: 5px 10px 20px 30px;

      //二维数据,相当于js中的二维数组

         $px: 5px 10px, 20px 30px;

       $px: (5px 10px) (20px 30px);

   list的数据可以用空格,逗号,小括号分隔,可以为多维list。list有一系列的函数。

   length($list)返回list的长度

   nth($list, $n) 返回第$n个值

   set-nth($list, $n, $value) 设置第$n个值   

   join($list1, $list2, [$separator]) 合并两个list,第三个参数为分隔符,可省略,有两个值comma 或 space,分别表示逗号和空格

   append($list1, $val, [$separator]) 在list的最后添加一个值,第三个参数同上   

   zip($lists…) 合并多个list为一个多维数组,注意规则,以下为示例

  zip(1px 1px 3px, solid dashed solid, red green blue)

=> 1px solid red, 1px dashed green, 3px solid blue

 

   index($list, $value) 返回$value在list中的下标,从1开始,没有返回null

   list-separator($list) 返回list的分隔符,有两个值comma 或 space,分别表示逗号和空格

   3.4.2 map

   示例:$box: (height: 200em, width: 100em, border:  1px  solid  red);

   map由key,value的键值对组成,其中value可以为list。map也有自己的函数

   map-get($map, $key) 根据key值返回value

    map-merge($map1, $map2) 合并两个map,返回值为map

    map-remove($map, $keys…) 根据key值删除相应的键值对,key可以为多个,返回值为map       

    map-keys($map) 返回map的key,返回值为list

    map-values($map) 返回map的value,返回值为list

    map-has-key($map, $key) 判断是否含有给出的key,返回值为true或false

   keywords($args) 以(arg1: val, arg2: val....)的格式返回(调用此函数的)函数的实参

3.5 全局变量

在sass 3.4之前的版本中,在选择器中声明的变量会覆盖外面全局声明的变量。在sass 3.4后,在值的后面加上!global,就可以声明为全局变量。全局变量既可以声明在选择器内也可以声明在选择器外。推荐声明在外面。示例: padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-family: 宋体; font-size: 14px;"> !global;

4、嵌套

        嵌套分为属性嵌套和选择器嵌套,一般属性选择器太乱,所以这里不给具体解释。选择器嵌套指的是在一个选择器中写另一个选择器的样式,实现嵌套关系,是scss结构更清晰。

        编译完之后,嵌套的选择器均作为被嵌套选择器的祖先选择器,所以这里不建议嵌套太多层,因为浏览器是从右向左进行编译的,写太多于效率不太好,建议在三层内。

       在选择器中,&可以作为父选择器,注意&后不要加空格,一般用于hover等伪类的书写。

5、跳出嵌套@at-root

       如需跳出嵌套,需在那个子类前加上@at-root,其实加上的是@at-root(without:rule),只是因为(without:rule)是默认的所以被省略了,这样是不能跳出@media和@support的,所以需要without其他的属性,all:所有的,media,跳出@media,support,跳出@support,至于默认的rule,就指一般的css规则了。

       如需多个选择器一起跳出,只需用{}把多个子类包裹起来,前面统一加上@at-root。

6、@mixin:混合

       当一些样式需要重复使用时,可以写在@mixin中,通过@include引用。混合类似于函数,实现一部分代码的重用而不是类似于封装类。混合可以传递参数,而且可以传递多个,用逗号分开。当传入的参数比定义的参数小时,取用默认值,没有默认值则报错。设置默认值只需在参数后面加:值 即可。当一个参数可以有多组值时,在参数后加三个点即可。

        这里需要注意的是用混合进行代码复用时是通过复制的方式复用的,并不会通过联合声明(使用并集选择器)的形式。

注释:有的文章将@mixin解释为模块化,但是或许是因为我对模块化了解欠缺,反正我是认为这样解释不那么好的。

7、@extend 继承

       @extend后加上自己要被继承的选择器,并且继承是通过联合声明的形式编译样式的。 继承多个选择器时加逗号隔开即可,但是像一些高级选择器,例如交集选择器目前就不能被识别,具体得实践中可以自己试。

8、占位选择器%

       占位选择器最基本的用法就是在定义和使用类的时候在类名前用%而不用点,这样如果不被使用的时候它是不会被编译进生成的css文件中的。使用方法是用@extend继承。

以上是关于Sass ,Scss 简单教程的主要内容,如果未能解决你的问题,请参考以下文章

SCSS 简要教程(常用指令与方法)

Sass 基础教程——预处理器

Sass 基础教程——预处理器

Sass 基础教程——预处理器

sass 语法

pycharm中使用sass