美文网首页程序员
SASS学习笔记

SASS学习笔记

作者: 无知者云 | 来源:发表于2018-10-10 09:06 被阅读0次

本文github地址:

git clone https://github.com/davenkin/sass-learning.git

安装SASS

cnpm install -g sass

SASS有2中格式,一种是早期具有缩进风格的sass文件,一种是当前推荐的scss文件,scss文件完全兼容css文件,因此css文件可以直接修改后缀名而变为scss文件,本文采用scss文件格式。

在名为styles的目录下创建scss文件test.scss:

$primary : #434433;

html {
  text-color: $primary;
}

这里我们使用了SASS中的变量功能,然后用sass命令进行编译:

sass test.scss test.css

也可以对整个目录进行编译:

sass --watch styles:out

表示监视styles目录下的所有scss文件, 并将它们编译到out目录下。此时SASS会以scss文件为单位进行编译,partial文件除外(下文有讲解)。

变量

变量为标有$前缀的符号,其定义方式跟css的键值对形式一样:

$variable : value

可以本scss文件中进行定义,也可以引用@import文件中的变量。

@import

标准css的@import会发起一次额外的HTTP请求,而SASS在编译的过程中便已经对@import的内容进行了合并。但是在以下情况下,SASS不会处理@import,而是照原样输出到css文件中:

  • @import "colors.css"; //the .css extension is specified
  • @import http://test.com/colors.css; //the http:// prefix is used
  • @import "colors" screen; //the import statement includes a media query
  • @import url(colors); //the url() function is used

如果多个scss文件import了同一份文件,那么这份文件的内容将重复出现在多个文件中,这可能会导致最终所有css合并到一起之后出现重复。

在styles目录下创建global.scss文件已被多个文件import:

body {
color:blue;
}

修改test.scss文件,import上面的global.scss文件:

@import './global';
$primary : #434433;

html {
  color: $primary;
}

另外创建test2.scss文件,同样import global.scss文件:

@import './global';
$secendary : red;

div {
  color: $secendary;
}

运行scss --watch styles:out,在out目录下输出test.css:

body {
  color: blue;
}

html {
  color: #434433;
}

test2.css内容:

body {
  color: blue;
}

div {
  color: red;
}

可以看到,body内容在两份文件中重复了,对此,建议的方式是,一是保证一个文件只被import一次,二是只在被import的文件中定义变量、mixin等信息。

Partial文件

前文提到,SASS会以文件为单位进行编译,如果不想某个scss文件单独编译,可以将其处理为partial文件,也即在文件名前加上一个下划线,比如_base.css

继承

可以通过@extend可以对css进行继承:

.button-base {
   radius: 2px;
   margin: 5px;
}

.menu-button {
   @extend .button-base;
   background-color: blue;
   color: white;
}

此时button-base和menu-button会同时输出,但是有时我们只想button-base作为继承的模板使用,就像java中的抽象类一下,此时可以使用placeholder selector,即在button-base前面去掉点.,另加上百分号%

%button-base {
   radius: 2px;
   margin: 5px;
}

嵌套

#main {
  p {
    color:black;
  } 
}

会被编译成:

#main p {
  color: black;
}

引用parent selector

有时我们希望在child选择符中加上parent选择符的前缀,此时可以通过特殊的&符号引用parent选择符,SASS通过类似于文本替换的方式将&替换为parent选择符。

a {
   color: red;
   &:hover{
     color: green;
   }
}

将被编译为:

a {
  color: red;
}
a:hover {
  color: green;
}

另一个例子:

#main {
   color: blue;
   &-header {
   color: yellow;
   }
}

将被编译成:

#main {
  color: blue;
}
#main-header {
  color: yellow;
}

相关文章

  • sass笔记-1|Sass是如何帮你又快又好地搞定CSS的

    Sass学习笔记持续整理中,开篇不讲怎么安装,sass是什么,这些搜索引擎会告诉你,我们从sass的作用开始讲起,...

  • gulp的配置

    学习笔记整理、总结 一、 sass、ruby、compass之间的关系和作用 sass是css预处理器,是基于ru...

  • Sass学习笔记

    ​ Sass是使用Ruby语言编写的css预处理语言,诞生于2007年。Sass, LESS, stylus等...

  • sass学习笔记

    title: vue 中使用 sass Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了...

  • SASS学习笔记

    本文github地址: 安装SASS SASS有2中格式,一种是早期具有缩进风格的sass文件,一种是当前推荐的s...

  • Sass 学习笔记

    本文以 sass 语法点为主线展开,但语法细节不在此赘述,如有疑问请移驾至 http://sass-lang.co...

  • Sass学习笔记

    1.优越体现 可以定义变量,方便统一修改和维护。 可以进行选择器的嵌套,表示层级关系。 如导入其他sass文件,最...

  • sass学习笔记

    安装运行 1.下载ruby并安装 2.安装之后打开命令行执行gem命令,检查是否已经安装好 安装完ruby之后,在...

  • SASS学习笔记

    SASS学习笔记 文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号;另一种是scss...

  • SASS 学习笔记

    什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变...

网友评论

    本文标题:SASS学习笔记

    本文链接:https://www.haomeiwen.com/subject/jwoyaftx.html