Sass

一、变量

把反复使用的css属性值 定义成变量,Sass 变量使用 $ 符号定义,变量包含:字符串、数字、颜色值、布尔值、列表、null 值。

$width: 100%; //变量定义

nav {
  width: $width; //变量使用
  height:100px;
}

 

Sass 变量的作用域只能在当前的层级上有效果。

$Color: red;

div {
  $Color: green;   // 局部作用域
  color: $Color;  //green
}

p {
  color: $Color; //red
}

 

使用 !global 关键词来设置变量是全局的

$Color: red;

div {
  $Color: green !global;   // 全局作用域
  color: $Color;              //green
}

p {
  color: $Color;  //green
}

 

二、嵌套规则与属性

1. 嵌套规则块:

#content {
  article {
    h1 { color: #333 }
    p { margin-bottom: 1.4em }
  }
  #content aside { background-color: #EEE }
}


 /* 编译后 */
#content article h1 { color: #333 }
#content article p { margin-bottom: 1.4em }
#content aside { background-color: #EEE }

 

2. 组合选择器:

> : 子组合选择器,选择一个元素的直接子元素。

+ :同层相邻组合选择器。

~ :同层全体组合选择器

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 }

 

3. 嵌套属性:

font: {
  family: Helvetica, sans-serif;
  size: 18px;
  weight: bold;
}

/* 编译后 */
font-family: Helvetica, sans-serif;
font-size: 18px;
font-weight: bold;

 

三、导入Sass文件

@import 指令可以让我们导入其他文件等内容。

CSS @import 指令在每次调用时,都会创建一个额外的 HTTP 请求。但,Sass @import 指令将文件包含在 CSS 中,不需要额外的 HTTP 请求。

@import filename;

 

1. 使用SASS部分文件

当通过@importsass样式分散到多个文件时,你通常只想生成少数几个css文件。那些专门为@import命令而编写的sass文件,并不需要生成对应的独立css文件,这样的sass文件称为局部文件你可以在文件名的开头添加一个下划线。这将告诉 Sass 不要将其编译到 CSS 文件。但是,在导入语句中我们不需要添加下划线。

_colors.scss  //局部文件命名


@import "colors"; //局部文件使用

 注意:请不要将带下划线与不带下划线的同名文件放置在同一个目录下,比如,_colors.scss 和 colors.scss 不能同时存在于同一个目录下,否则带下划线的文件将会被忽略。

 

2. 默认变量值
如果这个变量被声明赋值了,那就用它声明的值,否则就用这个默认值。

假如你写了一个可被他人通过@import导入的sass库文件,你可能希望导入者可以定制修改sass库文件中的某些值。使用sass!default标签可以实现这个目的。它很像css属性中!important标签的对立面,不同的是!default用于变量。

$width: 400px !default;
.box {
width: $width;
}

 在导入你的sass局部文件之前声明了一个$width变量,那么你的局部文件中对$width赋值400px的操作就无效。如果用户没有做这样的声明,则$width将默认为400px

 

四、混入

@mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式。

@include 指令可以将混入(mixin)引入到文档中。

// 定义混入
@mixin bold-text {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
}


// 使用混入
.usemixin{
  @include bold-text;
  background-color: green;
}

//编译
.usemixin{
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
  background-color: green;
}

//混入包含混入
@mixin mixins {
  @include bold-text;
  @include name;
}

 

混入传参:

/* 混入接收两个参数 */
@mixin bordered($color, $width) {
  border: $width solid $color;
}

.myArticle {
  @include bordered(blue, 1px);  // 调用混入,并传递两个参数
}


//混入默认值
@mixin bordered($color, $width:1px) {
  border: $width solid $color;
}

.myArticle {
  @include bordered(blue);  // 调用混入,并传递两个参数
}


//混入可变参数
@mixin box-shadow($shadows...) {
      box-shadow: $shadows;
}

.shadows {
  @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
}

 

五、继承

@extend 指令告诉 Sass 一个选择器的样式从另一选择器继承。

.basic  {
  width:100px;
  border: none;
  text-align: center;
  font-size: 16px;
  height:40px;
  line-height:40px;
}

.report  {
  @extend .basic;
  background-color: red;
}

.submit  {
  @extend .basic;
  background-color: green;
  color: white;
}


//编译后
.basic, .report, .submit {
  width:100px;
  border: none;
  text-align: center;
  font-size: 16px;
  height:40px;
  line-height:40px;
}

.report  {
  background-color: red;
}

.submit  {
  background-color: green;
  color: white;
}

 

posted @ 2022-04-28 10:43  编程民工  阅读(68)  评论(0编辑  收藏  举报