1、sass安装
    因为sass是基于ruby写的,所以首先必须安装ruby。去ruby官网下载安装ruby安装包,在安装过程中,勾选上添加到环境变量,这样可以在安装的时候自动将安装路径添加到环境变量中。
    ruby安装成功后,安装sass,在命令行中输入“gem  install sass”进行安装。、
2、sass的编译
    sass有两种后缀名,一种是以“.sass”结尾的,另一种是以“.scss”结尾的,一般情况下,都是用后者。
    将写好的scss文件进行编译,编译方法:可以在命令行中项目目录下输入“sass input.scss output.css ”.
    还能实现实时自动编译:“sass --watch inpyt.scss:output.css”

我用的是webstorm编写软件,webstorm是支持sass编译的,用webstorm安装sass的方法可百度,很简单。


3、sass变量
    “$”:用来声明变量,例如$blue:blue;  变量可以直接使用,如:“div{color:$blue;}”,编译过后----div{color : blue;}
    变量也是有作用域的,分为全局作用域和局部作用域;如下:
    $blue:blue;  //全局变量
    div{
        $blue:blue;  //局部变量
        color:$blue;
    }
    局部变量只在那一块中起作用,不影响全局变量的定义。 也可以将局部变量转换为全局变量,使用“!global”;如div{$blue:red !global;   color:$blue;}  a{ color: $blue;  }
    在sass中,变量名的定义既可以使用中划线也可以使用下划线,这两者是互通的,意思就是说,在变量定义的时候使用的是中划线,在引用变量的时候可以使用下划线,即将中划线替换成下划线。
4、嵌套css规则
    使用sass可以进行样式的嵌套,使用css,有时候会要重复写很多代码,使用sass嵌套则可以减少很多代码量。例子如下:
  #content {

article { 
         h1 { color: #333 }
         p { margin-bottom: 1.4em } 
     } 
     aside { #EEE }
 } 
 /* 编译后 */
 #content article h1 { color: #333 }
 #content article p { margin-bottom: 1.4em }
 #content aside { 父选择器的标识符&
    在sass中,对于简单的嵌套是没问题的,但如果涉及到父选择器中使用伪类的话,简单的嵌套就行不通了,所以现在有个标识符“&” 可以解决这个问题。例如:
    article a{
        color:blue ;
        &:hover:red;
    } 
    //编译过后
     article a { color: blue }
   article a:hover { color: red }
6、群组选择器的嵌套
     像 .button button会命中button元素和类名为.button的元素,这种选择器叫做群组选择器。群组选择器的规则会对群组中任何一个选择器的元素生效。例子如下所示:
    .container {

h1, h2, h3 {margin-bottom: .8em}

    } 
    //编译后
     .container h1, .container h2, .container h3 { margin-bottom: .8em }
也可以是:
     nav, aside {

a {color: blue}
       }
//编译后
    nav a, aside a {color: blue} 
7、子组合选择器和同层组合选择器:>、+和~;
        这仨个选择器必须配合其他的选择器一起使用,以制定浏览器仅选择某种特定的上下文中的元素。
        “>”选择器 :选择一个元素的直接子元素。
        “+”选择器:同层相邻组合选择器,即与一个元素相邻的同一级的兄弟元素。
        “~”选择器:同层全体组合选择器,即与一个元素处于同一级别的所有元素。 
    各选择器的用法如下所示:
        article {
         ~ article { border-top: 1px dashed #ccc } 
         > section { background: #eee } 
         dl > { 
             dt { color: #333 } 
             dd { color: #555 }
         } 
         nav + & { margin-top: 0 }
    }
    //编译后
     article ~ article { border-top: 1px dashed #ccc }
     article > section{ background: #eee }
     article dl > dt { color: #333 }
     article dl > dd { color: #555 }
     nav + article { margin-top: 0 }
8、属性嵌套
    在sass中,除了选择器的嵌套之外,还可以进行属性的嵌套。 
    属性嵌套的规则是:将属性名从中划线的地方断开,在根属性的后边添加一个冒号:,紧跟一个{}块,然后把子属性的部分写在{}中,例子如下所示;
        nav {
         border: {
         style: solid;
         width: 1px;
         color: #ccc;
         }
     }
    //编译后
    nav { border-style: solid; border-width: 1px; border-color: #ccc;}

属性和选择器的嵌套是非常大的特性,它不仅减少了代码的编写量,而且通过视觉上的缩进使自己编写的样式结构更加清晰,更易于阅读和开发。

9、 导入sass文件
     在一个大型的项目中,必定会存在大量的css样式,将这所有的样式放在一起,看起来不美观,所以需要将这些样式拆分到多个文件中,sass可以实现这个功能,通过@import规则进行样式文件的引进。css也有这个规则,只有执行该规则的时候,浏览器才会去下载其他的css文件,这会导致页面在加载的时候会很慢。
    为@import命令专门编写的sass文件,不会生成对应的css文件,这样的sass文件被称为局部文件。
    sass局部文件一般是以下划线开头,当@import一个局部文件时,不需要将文件的下划线写入,只需要将下划线之后的名字导入即可。
     9.1 默认变量值
        sass中可以使用!default标签来实现这个目的。
    9.2 嵌套导入
         和原生的css不同,sass允许@import命令直接写在css规则内。例子如下:
         这是一个名为_blue-theme.scss的局部文件
         aside {

background: blue; color: white;
     }
    把该文件导入到一个css规则内,如下所示:
     .blue-theme {@import "blue-theme"}
     //生成的结果跟你直接在.blue-theme选择器内写_blue-theme.scss文件的内容完全一样。
    .blue-theme { 
         aside { 
             background: blue; 
             color: #fff; 
         }
     }
   9.3 原生的css导入
     以下三种情况,在sass中使用@import命令,导入的时候,也会造成浏览器的额外下载。影响加载速度。
        1.被导入的文件名以.css结尾;
        2.被导入的文件名是一个URL地址(例如:http://www.sass.hk/css/css/css);
        3.被导入的文件名是css的url()值。
   9.4 静默注释
     sass提供了一种不同于css标准注释格式/*.....*/的注释语法,即静默注释3,其注释内容不会出现在生成的css文件中;sass有两种注释方法:
     1.  /....../ :这种注释方法的注释内容不会出现在相对应生成的css文件中
     2./*......*/: 这种注释方法的注释内容会出现在相对应生成的css文件中
    但是当注释出现在不该出现的地方,如css属性或选择器中,这些注释也会被抹掉,如下:
     body { 
         color /* 这块注释内容不会出现在生成的css中 */: #333;
         padding: 1; /* 这块注释内容也不会出现在生成的css中 */ 0
     }

保持sass的条理性和可读性的最基本的三个方法:嵌套、导入、注释。

转载于:https://www.cnblogs.com/Shirley-1994/p/7048509.html

sass部分知识小结相关推荐

  1. 好程序员分享24个canvas基础知识小结

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  2. unicode 编码转换漏洞_好程序员Python教程之字符串编码知识小结

    好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...

  3. Android技能树 — 树基础知识小结(一)

    前言: 现在安卓面试,对于数据结构的问题也越来越多了,也经常看到别人发的面试题都是问什么红黑树,二叉树查找等,所以我们虽然不会马上就会各种难的面试题,但起码树的基础知识还是要会的,这样才能去进一步学. ...

  4. python编码转换语句_好程序员Python教程之字符串编码知识小结

    好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...

  5. python static 的用法_Python中static相关知识小结

    非 static 编译 不指定额外参数直接编译 Python: $ ./configure $ make 查看所依赖的共享库: $ ldd python linux-vdso.so.1 => ( ...

  6. 好程序员分享24个canvas基础知识小结 1

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  7. C/C++位域知识小结

    C/C++位域知识小结 几篇较全面的位域相关的文章: http://www.uplook.cn/blog/9/93362/ C/C++位域(Bit-fields)之我见 C中的位域与大小端问题 内存对 ...

  8. 知识小结------数据分析------Fisher‘s exact test(费希尔检测)

    系列知识小结目录 Cox比例风险回归模型(proportional hazards model) Fisher's exact test费希尔检测 系列知识小结目录 前言 一.Fisher's exa ...

  9. 推广知识小结(名词篇CPA、CPS、CPC、CPM、CPT、CPD)

    推广知识小结(名词篇) 一.CPC 二.CPM 三.CPA 四.CPS 五.CPT 六.CPD 一.CPC CPC,这一种推广模式全称为:Cost Per Click.这一种推广方式是按照点击量来进行 ...

最新文章

  1. 洛谷P4550 收集邮票(概率期望)
  2. 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp
  3. 星型模型和雪花型模型比较
  4. agv matlab应用,简单介绍一下agv调度控制系统常见的软件应用
  5. 牛客网——华为机试(题15:求int型正整数在内存中存储时1的个数)(Java)
  6. The compiler compliance specified is 1.7 but a JRE
  7. c#下不同命名空间的引用(一个project使用另外一个project的名称空间)
  8. 计算机教案画圆形和方形,画方形和圆形的教案
  9. 使用layer的弹窗时,出现layer引入成功,触发成功,控制台无报错,但是页面无变化或者仅出现遮罩层的问题的解决思路
  10. 开机启动项快捷方式所在的目录
  11. 电路模电数电知识点总结(初步完成,后期进行小部分优化)
  12. Win 10 蓝屏,出现DRIVER_POWER_STATE_FAILURE的解决方法
  13. 51单片机-DS1302时钟芯片(自己理解的
  14. 郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类(二)—朴素贝叶斯算法)...
  15. c++ 函数之间 传递向量_将向量传递给C ++中的函数
  16. Android彻底解决Youtube和Google play store等套件报错崩溃的问题
  17. 常用的电脑显示器接口有哪几种?
  18. Cacti使用安装详解
  19. Centos8修改源并更新
  20. 我经历的字节跳动后台开发实习二面,面试官说叫我补补操作系统和算法

热门文章

  1. ubuntu下创建图标
  2. v8学习笔记(三) 运行时环境
  3. 利用Windows API获得系统高级功能
  4. Tomcat 输入http://localhost:8080打不开网页的解决方法
  5. JVM—内存模型JMM
  6. MMIX机器简要介绍
  7. 排序算法--快速排序
  8. STM32的I2C特性及架构
  9. java中的类型转换
  10. 高性能服务器开发之C++定时器