css预处理器Sass

Sass

Sass的安装

可以使用npm安装,但就是有些慢,可以用淘宝镜像。
npm安装命令:

npm install -g sass

安装成功:输入sass --version

1.26.10 compiled with dart2js 2.8.4

具体npm安装教程什么的可以去网上找找。

Sass 扩展了 CSS3,增加了规则、变量、混入、选择器、继承、内置函数等等特性
scss是sass的新语法,我们创建.scss文件就可以了,因为scss更像我们编写的css代码。
在这里插入图片描述


变量

Sass的变量使用$声明,声明的变量就像const常量一样,可以把经常使用到的值用变量储存起来,只要改变变量的值就可以了。

$mycolor: red;
$myfont-size: 20px;

body{
    background-color: $mycolor;
    font-size: $myfont-size;
}

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

$side : left;
.rounded {
   border-#{$side}-radius: 5px;
}

作用域

sass变量的作用域就是在变量声明的层级。

body{
    background-color: $mycolor;
    font-size: $myfont-size;
    $width:100%;//$width只能在body中使用
}
table{
    width:$width;
}

进行编译的话会报错:
在这里插入图片描述

!global

!global可以设置变量是在全局作用域的。

$myColor: red;

h1 {
  $myColor: green !global;  // 全局作用域
  color: $myColor;
}

p {
  color: $myColor;
}

全局变量一般放在同一个文件。


Sass嵌套

标签

这个就像是html的嵌套规则一样了,之前在写表单的时候,经常会遇到很多属性重复写,因为按钮和文本框不是一个属性,单独写起来就显得特别的乱。

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }
  li {
    display: inline-block;
  }
  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

写出来层次分明

属性

属性也是可以嵌套的:
但必须要在属性后面加:

$mycolor: red;
$myfont-size: 20px;
$mycolor:yellow;
body{
    background-color: $mycolor;
    font-size: $myfont-size;
    $width:100%;//$width只能在body中使用font: {
    font: {
        family: Helvetica, sans-serif;
        size: 18px;
        weight: bold;
    }
      
    text: {
        align: center;
        transform: lowercase;
        overflow: hidden;
    }
}
body {
  background-color: yellow;
  font-size: 20px;
  font-family: Helvetica, sans-serif;
  font-size: 18px;
  font-weight: bold;
  text-align: center;
  text-transform: lowercase;
  text-overflow: hidden;
}

@import

@import用于导入其他文件:@import "test;"
不需要加后缀名
那么引入后的scss文件就会包含被引入文件的内容。


@mixin

@mixin混入,就是规定了可以在样式表中重复使用的样式。
比如我想让这个div的样式是红色,25px,加粗,蓝色边框。就可以使用混入把这些样式装起来。

@mixin div_style {
    color: red;
    font-size: 25px;
    font-weight: bold;
    border: 1px solid blue;
    height: 150px;
}
div{
    @include div_style;//使用include把混入包含
    background-color: green;
    width: 150px;
}
div {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
  height: 150px;
  background-color: green;
  width: 150px;
}

混入还可以传递参数:

@mixin div_style($height,$color) {
    color: $color;
    font-size: 25px;
    font-weight: bold;
    border: 1px solid blue;
    height: $height;
}
div{
    @include div_style(150px,red);//使用include把混入包含
    background-color: green;
    width: 150px;
}

这样编译后的结果和上面是一样的。

使用默认值:

@mixin div_style($height:200px,$color) {
//如果include调用那里没有传入height的值,就会使用默认值
    color: $color;
    font-size: 25px;
    font-weight: bold;
    border: 1px solid blue;
    height: $height;
}

可变参数:

@mixin div_style($box-shadow...,$color,$height:200px) {
    //如果include调用那里没有传入height的值,就会使用默认值
    //不知道box-shadow会传入几个参数,可以使用...
    color: $color;
    font-size: 25px;
    font-weight: bold;
    border: 1px solid blue;
    height: $height;
    box-shadow: $box-shadow;
}

这种写法是不对的,如果使用可变参数,那么只能有这一个参数

@mixin div_style($box-shadow...){}//这样

@extend

和java一样,@extend用于 一个选择器的样式从另一选择器继承。

.button-basic  {
  border: none;
  padding: 15px 30px;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
}

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

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

三个按钮只有背景颜色和字体颜色不一样。


Sass计算

在Sass中可以使用算式:

    width: $width+10px;
    height: (50px/2);

Sass伪类

Sass编译

接下来
我们用win+R打开命令行,进入我们scss文件存储的位置,输入

sass test.scss test.css

即把test.scss文件编译为test.css文件,当然编译后的文件名随意,也可以直接输入文件位置。
在这里插入图片描述
直接在我们的HTML文件中link css文件相对位置,就可以看到可以应用了。

我用的编辑器是vscode,里面有很多插件,我们下载Live Sass Compiler,在settings.json中配置:

"liveSassCompile.settings.formats": [{

    "format": "expanded",

    "extensionName": ".css",

    "savePath": "~/../css"  //编译后保存的路径

    }
],
"liveSassCompile.settings.generateMap": false,//不编译出map文件

当然你可以根据自己的程序进行不同的配置。

如果我们不希望scss文件被编译为css文件,可以将scss文件开头加上_ ,变成_test.scss,但使用@import导入时不用加下划线 _,@import test.scss
注意: test.scss_test.scss不能放在同一目录下

更多用法可以参考:SASS使用指南

其他的预处理器可以自己在网上找教程,方法什么的和Sass没有太多的差别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值