CSS预处理器Sass -- Sass、Less、Stylus比较(2)
前言:本节主要学习下Sass、Less、Stylus在使用方面的异同。
1.环境安装配置区别。
<1>Sass环境配置?
Sass的底层是Ruby语言开发的,安装Sass前提需要先安装Ruby,安装过程参考 https://www.cnblogs.com/diweikang/p/9609825.html
<2>Less环境配置?
浏览器端用法:
<1>、引入Less文件 <link rel="stylesheet/less" type="text/css" href="styles.less" />
<2>、使用JS文件编译,执行<script src="less.js" type="text/javascript"></script>,会将styles.less编译为styles.css文件。
node安装:运行命令 npm install -g less,然后使用require('less')引入项目中使用。
参考Less官网:http://lesscss.cn/
<3>Stylus的安装?
前提先安装node,命令行运行npm install -g stylus,然后使用require('stylus')引入项目中使用。
2.写法格式异同。
<1>Sass的写法格式?
缩进格式:旧版本写法,无需大括号和分号结尾。
h1
color: red
a
color: green
兼容CSS的写法:大括号包含,同时必须分号结尾
h1 { color: red; a { color: green; } }
<2>Less的写法格式?
Less同样是兼容CSS的写法,同Sass的第二种写法。
h1 { color: red; a { color: green; } }
<3>Stylus的写法格式?
Stylus的写法更灵活:
缩进格式:
h1
color: red
a
color: green
兼容CSS格式:
h1 { color: red; a { color: green; } }
怪异写法:
h1
color red
a
color green
注意:三种写法可以混用。
3.变量声明异同
<1>Sass的变量声明?
Sass变量声明是以$符号开头的。
$colorRed: red; $colorGreen: green; h1 { color: $colorRed; a { color: $colorGreen; } }
<2>Less的变量声明?
Less变量声明是以@符号开头的。
@colorRed: red; @colorGreen: green; h1 { color: @colorRed; a { color: @colorGreen; } }
<3>Stylus的变量声明?
Stylus变量声明可以以任意字符开头,没有过多的限制。
$colorRed: red; //可以以$符号开头 colorGreen: green; //可以直接写 h1 { color: $colorRed; a { color: colorGreen; } }
4.混入的异同
<1>Sass的混入?
以@开头,其中的参数便令使用$符号开头。
@mixin alert($color: red) { color: $color; }
<2>Less的混入?
以.开头,其中的参数便令使用@符号开头。
.alert(@color: red) { color: @color; }
<3>Stylus的混入?
直接是函数名,参数就是正常的函数命名形式。
alert(colorArg: red) { color: colorArg; }
5.继承的异同
<1>Sass的继承?
使用@extend实现元素之间样式的继承。
.block { margin: 10px; padding: 5px; } p { @extend .block; color: red; }
<2>Less的继承?
less中继承无需使用@extend,直接嵌套其他元素的样式。
.block { margin: 10px; padding: 5px; } p { .block; color: red; }
<3>Stylus的继承?
stylus实现继承方式和sass一样,都是使用@extend实现。
.block { margin: 10px; padding: 5px; } p { @extend .block; color: red; }
总结:这节学习Sass、less、stylus之间的基本区别,主要是书写格式、变量定义、混入、继承之间的区别,其他更多的区别需要更多的学习。
注意:变量、混合、嵌套、继承、颜色函数称为CSS预处理器的五大特性。