Less、Sass\Scss

Less、Sass\Scss

less、scss/sass区别

都是动态样式语言,比css多出很多功能。
scss/sass的功能有变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等,Sass\Scss是缩排语法,易读性高,更方便阅读和维护。
less的功能有变量,继承,运算, 函数, Less 既可以在客户端上运行,也可在服务端运行 ( Node.js)。

区别
scss与less变量符不一样;编译环境不同;作用域不同;less无输出,less不支持条件语句、循环语句;引入外部css方式不同

  1. 编译环境
    sass的安装需要Ruby环境,是在服务端处理的,而less是需要引入less.js来处理less代码输出css到浏览器,也可以在开发环节使用less,然后编译成css文件,直接放到项目中,也有 Less.app、SimpleLess、CodeKit.app这样的工具,也有在线编译地址。在一般前端项目里面使用 yarn add less yarn add less-loader添加到对应的项目里面。

  2. scss与less变量符不一样
    less是@、scss是$、css变量是两根连词线(- -)

  3. 作用域不同
    Less中{}内定义的变量为局部变量,而scss\sass的变量是全局变量

	/** Less-作用域*/
@color: #00c; /* 蓝色 */
#header {
  @color: #c00; /* red */
  border: 1px solid @color; /* 红色边框 */
}

#footer {
  border: 1px solid @color; /* 蓝色边框 */
}

/** Less-作用域编译后*/
#header{border:1px solid #cc0000;}
#footer{border:1px solid #0000cc;}

/**scss-作用域*/
$color: #00c; /* 蓝色 */

#header {

  $color: #c00; /* red */
  border: 1px solid $color; /* 红色边框 */
}

#footer {
  border: 1px solid $color; /* 蓝色边框 */
}

/** Sass-作用域编译后*/

#header{border:1px solid #c00}
#footer{border:1px solid #c00}

/** 我们可以看出来,less和scss中的变量会随着作用域的变化而不一样。
*/
  1. 输出设置不同
    scss提供四种输出选项:nested, compact, compressed 和 expanded。
    有四种选择,默认为nested

    • nested:嵌套缩进的css代码
    • expanded:展开的多行css代码
    • compact:简洁格式的css代码
    • compressed:压缩后的css代码=
  2. 条件语句不同:less不支持,scss语句支持if{}else{}、for{}循环语句
    less不支持条件语句
    scss语句支持if{}else{}、for{}循环语句

/** if else */
@if lightness($color) > 30% {
	/**	do....*/
} @else {
	/**	do....*/
}


/**	循环*/
@for $i from 1 to 10 {
  	.border-#{$i} {
    	border: #{$i}px solid red;
  	}
}
  1. 引入外部css方式不同:less引用外部文件和css中的@import没什么差异;scss引用的外部文件命名必须以_开头,如:_test1.scss
源代码
@import "_test1.scss";
@import "_test2.scss";
@import "_test3.scss";

// 编译后:
h1 {
  font-size: 17px;
}
 
h2 {
  font-size: 17px;
}
 
h3 {
  font-size: 17px;
}

less引用外部文件和css中的@import没什么差异。

@mixin

@minxin指令可以在整个样式表中定义重复使用的样式

用法:

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

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

注意事项:①必须是sass文件②引入sass的style要加lang=‘sass’

@mixin name {
    color: red;
    font-size: 25px;
    ...
}

// 使用
text {
    @include name		
    /* 等同于 
       color: red;
        font-size: 25px;
        ...
    */
}

还可以设置参数

@mixin name($color, $fontSize) {
    color: $color;
    font-size: $fontSize;
    .color-name {
		color: $color !important;
	}
}

text {
    @include name(red, 25px)		
    /* 等同于 
       color: red;
       font-size: 25px;
    */
}
/* 还可以这么用 
	<text class="color-name">123</text>
*/

甚至可以使用…设置可变参数

@mixin box-shadow($shadows...) {
    -moz-box-shadow: $shadows;
    -webkit-box-shadow: $shadows;
    box-shadow: $shadows;
}

text {
    @include box-shadow(0 4px 5px #666, 2px 10px #999)		
    /* 等同于 
        -moz-box-shadow: 0 4px 5px #666, 2px 10px #999;
        -webkit-box-shadow: 0 4px 5px #666, 2px 10px #999;
        box-shadow: 0 4px 5px #666, 2px 10px #999;
    */
}

案例:自定义小程序主题

<template>
	<view class="wrap" id="theme-red">
        <text class="color-base-text">234</text>
     </view>
</template>
<style scoped lang="scss">
	@import '~@/.../main.scss';
</style>

<!-- main.scss -->
<style lang="scss">
	@mixin base($baseColor: #1786f8, $baseHelpColor: #ff851f){
        $base-color: $baseColor;
        $base-help-color: $baseHelpColor;
        .color-base-text {
            color: $base-color !important;
        }
        .color-base-bg {
            background-color: $base-color !important;
        }
    }

    #theme-red {
        $base-color: #ff4544;
        $base-help-color: #ffb644;
        @include base($base-color, $base-help-color);
    }
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值