Sass上篇

2020-09-12  本文已影响0人  懂会悟

1、Sass简单介绍

Sass是对CSS(层叠样式表)的语法的一种扩充,诞生于2007年,最早也是最成熟的一款CSS预处理器语言,它可以使用变量、常量、嵌套、混入、函数等功能,Sass最后还是会编译出合法的CSS让浏览器使用,也就是说它本身的语法并不太容易让浏览器识别,因为 它不是标准的CSS格式,在它的语法内部可以使用动态变量等,所以它更像一种极简单的动态语言。
现在的Sass已经有了两套语法规则:一个依旧是用缩进作为分隔符来区分代码块的;另一套规则和CSS一样采用了大括号({})作为分隔符。后一种语法规则又名scss,在Sass3之后的版本都支持这种语法规则。本文主要介绍scss


2、变量声明

$basic-border: 1px solid black;
$plain-font: "Myriad Pro"、Myriad、"Helvetica Neue"、Helvetica; 
$nav-color: #F90;
nav {
  $width: 100px;
  width: $width;
  color: $nav-color;
}

  /* 编译后 */

nav {
  width: 100px;
  color: #F90;
}

$highlight-color: #F90;
$highlight-border: 1px solid $highlight-color;
.selected {
  border: $highlight-border;
}

  /* 编译后 */

.selected {
  border: 1px solid #F90;
}

3、嵌套CSS 规则

Sass的嵌套规则与css的嵌套规则很相似

后代选择器
#content {
  article {
    h1 { color: #333 }
    p { margin-bottom: 1.4em }
  }
  aside { background-color: #EEE }
}
 /* 编译后 */
#content article h1 { color: #333 }
#content article p { margin-bottom: 1.4em }
#content aside { background-color: #EEE }
#content {
  background-color: #f5f5f5;
  aside { background-color: #eee }
}
 /* 编译后 */
 #content { background-color: #f5f5f5 }
 #content aside { background-color: #eee }

父选择器的标识符&

当包含父选择器标识符的嵌套规则被打开时,它不会像后代选择器那样进行拼接,而是&被父选择器直接替换

article a {
  color: blue;
  &:hover { color: red }
}
 /* 编译后 */
 article a { color: blue } /*后代选择器*/
 article a:hover { color: red } /*父选择器*/
.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}


4、导入sass文件

css有一个特别不常用的特性,即@import规则,它允许在一个css文件中导入其他css文件。然而,后果是只有执行到@import时,浏览器才会去下载其他css文件,这导致页面加载起来特别慢。

sass也有一个@import规则,但不同的是,sass的@import规则是在生成css文件时就把相关文件导入进来。这意味着所有相关的样式被归纳到了同一个css文件中,而无需发起额外的下载请求。另外,所有在被导入文件中定义的变量和混合器均可在导入文件中使用。

Sass导入规则

当通过@import把sass样式分散到多个文件时,你通常只想生成少数几个css文件。那些专门为@import命令而编写的sass文件,并不需要生成对应的独立css文件,这样的sass文件称为局部文件。对此,sass有一个特殊的约定来命名这些文件,

此约定即,sass局部文件的文件名以下划线开头。这样,sass就不会在编译时单独编译这个文件输出css,而只把这个文件用作导入。当你@import一个局部文件时,还可以不写文件的全名,即省略文件名开头的下划线。举例来说,你想导入themes/_night-sky.scss这个局部文件里的变量,你只需在样式表中写@import "themes/night-sky";


上一篇下一篇

猜你喜欢

热点阅读