Sass和Less(预处理器)

一、了解Sass和Less

Sass 对自己的定位首先是一个预处理器。其最主要的竞争对手包括 LESS,一个基于 Node.js 的预处理器,因著名 CSS 框架 Bootstrap 的使用而声名鹊起。此外还有 Stylus ,一种对形式无所限制的 LESS 版本。它是一种无论你想怎么样使用,大都能顺利转换成 CSS 的程序语言。
Sass和Less都属于预处理器。Less文件以.less结尾,Sass文件新版的以.scss结尾,老版的以.sass结尾。
Less文件和Sass文件都会生成css文件。
在这里插入图片描述

二、Sass和Less 语法

在这里插入图片描述
在这里插入图片描述

2.1 注释

在less文件中,单行注释不会再css文件中显示出来,多行注释就是css的注释方式,会在css文件中显示出来。
在这里插入图片描述

2.2 语法

赋值

在Less文件中,定义变量用@
在Sass文件中,定义变量用$

@number:123px;
$number:123px;

/* 
    普通变量声明:直接用 $ 声明
    变量执行顺序是自上而下,当下面对变量重新赋值时,会用下面的新值
*/
$width:200px;
$width:100px;

/* 
    默认变量:在后面添加 !default
    变量在执行的时候,不会根据位置执行,执行不是默认变量的值
*/
$width:230px;
$width:300px !default;

/* 
    全局变量和局部变量
    在局部变量后添加 !global ,局部变量作用域为全局变量
*/
$color:red;
#div1{
    color: $color;  //使用全局变量,结果 red
    // $color:orange;  //局部变量,结果是 orange
   $color:orange !global;   //添加 !global 后,局部变量 变成全局变量,div2的值为 orange
    .box{
        background-color: $color;   //在本作用域下颜色是 orange
    }
   
}

#div2{
    background-color: $color;//
}

插值

在Less文件中定义一个值,插入进去用@{},将定义的值放入括号中


在Less中的编译和结果
在这里插入图片描述
在这里插入图片描述


特殊变量 #{}
在Sass中,用$定义值后,用#{}进行插值,$和值一起写入括号中。
在这里插入图片描述
在这里插入图片描述

作用域

采用就近原则,在大括号里有已经创建的变量,优先使用大括号里面的变量值。


在Less文件中,在大括号内先取值,在定义,最后显示的都是大括号内的变量值
在这里插入图片描述
在这里插入图片描述


在Sass文件中,如果先取值,在定义新变量,定义新变量之前的会使用之前的值,定义新变量后的代码会取更改后的值。Sass作用域有顺序。
在这里插入图片描述
在这里插入图片描述

选择器嵌套、伪类嵌套、属性嵌套(Sass)

在Less和Sass中,可以对标签嵌套,在里面写各个层级写相应的样式,编译完成后,会自动写好对应的选择器。减少复杂的编译选择器代码。
伪类嵌套,需要在伪类的冒号前面加&,不然会有空格。
属性嵌套只有在Sass中有,Less没有。

/* 
    选择器嵌套
*/
#div3{
    width: 300px;

    .name{
        color: aqua;
    }

    a{
        background: azure;
        // & 父类元素选择器,添加伪类选择器
        &:hover{
            color: blue;
        }
    }
}

在这里插入图片描述
在这里插入图片描述

运算

在Less加减乘除都可以做。如果进行不同单位的计算,会按照第一个单位进行计算,只计算值。
在这里插入图片描述


在Sass中不同单位不能进行计算,默认/是分割,不会像Less一样会认为是除号。
在这里插入图片描述

函数

Sass和Less有的函数可以通用,有的不行,需要去官网查询API。
round()取整,percentage()小数点换成百分数。


Sass可以自定义函数中,用function定义。Less中不能使用自定义函数

/*
    函数
*/
$colors:(light:white,dark:black);	//map映射
//根据key获取值
@function color($key){
    @if not map-has-key($colors,$key){
        //警告@warn不会中断 sass 监听
        @warn  "在映射中没有#{$key}这个键";

        //错误@error 会中断 sass 监听
        @error "在映射中没有#{$key}这个键";
    }

    @return map-get($colors,$key);
}

//使用函数color
body{
    background: color(light);
}

在这里插入图片描述
在这里插入图片描述

混合、命名空间(Less)、继承

混入在Less中使用。样式可以单独显示,也可以在其他的杨使用混入,如果不想选择器编译出来可以在样式后面加一个(),就不会编译出来,可以在括号中进行传参。
在这里插入图片描述


在Sass中混入,用@mixin方法定义要混入的样式,用@include将方法混入。就是编写代码块和使用代码块。


/* 
    混合:@mixin 名称{}
    引用混合: @include 名称
*/

//无参混合
@mixin clear {
    width: 100px;
}

#div4{
    @include clear;
}
//有参混合
@mixin col($color:red,$border:1px solid black) {
    background: $color;
    border:$border ;
}

#div5{
    @include col;
    //传参
    @include col(orange)
}

在这里插入图片描述
在这里插入图片描述
继承:
在这里插入图片描述


Less命名空间
#名字()创建,#名字+样式调用
在这里插入图片描述


Less继承
直接在需要使用样式中,用&:extend()调用。编译后会写成分组选择器,节省代码量,相比命名空间。
在这里插入图片描述


Sass继承
@extend直接调用样式,编译后也是和Less一样形成分组选择器。
在这里插入图片描述
在这里插入图片描述

合并、媒体查询

Less合并
在Less中对同一种属性的值进行合并,用+合并之后,编译的是用,隔开,用+_合并的值,编译后用空格隔开。
在这里插入图片描述


Sass合并
Sass合并在定义的函数中用小括号填入参数,用的是键值对的方式,用map-values()传入参数。
在这里插入图片描述


Less和Sass媒体查询
在这里插入图片描述

条件判断、循环

Less条件判断和循环
在这里插入图片描述
在这里插入图片描述


Sass循环
只有在Sass中有if-else,和for循环
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

引入

Less和Sass都可以用导入。Sacc导入scss或sass文件,Less导入less文件。
作用就是 将需要用的样式编写到一个文件中,其他需要本样式的直接引入,例如清除默认样式
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值