css,sass,scss和less的区别
1.css
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言
css预处理器:
css预处理器定义了一种新语言,是用一种专门的编程语言,进行网页的样式设计,之后在被编译为正常的css文件,以供项目使用。
为什么使用css预处理器:css只是一个标记语言,不是编程语言,不可以自定义变量,不可以引用等
使用css预处理语言的好处:是css更加简洁、方便修改、可读性强、适用性强并且更易于代码的维护
2.sass
sass是由buby语言编写的一款css预处理语言,和html一样有严格的缩进风格,和css编写规范有着很大的出入,是不使用花括号和分号的,所以不被广为接受。
sass语法只是在原有css语法基础上做了一些语法扩展(添加了一些新的css特性)
scss 与sass
CSS书写代码规模较大的Web应用时,容易造成选择器、层叠的复杂度过高,因此推荐通过SASS预处理器进行CSS的开发,SASS提供的变量、嵌套、混合、继承等特性,让CSS的书写更加有趣与程式化
sass和scss都是css预处理语言,其后缀名是分别为 .sass和.scss两种。
SASS版本3.0之前的后缀名为.sass,而版本3.0之后的后缀名.scss。
继sass之后scss的编写规范基本和css一致,sass时代是有严格的缩进规范并且没有‘{}’和‘;’。而scss则和css的规范是一致的。
Sass是成熟、稳定、强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能。
3.sass和scss的使用
- sass语法中,支持单行注释,多行注释
- sass的选择器嵌套语法
- 声明变量,一般声明变量在所有嵌套语法的最外层,变量必须以$开头
- 函数@function,@return这样的指令必须以@开头
// sass 语法只是在原有css语法基础上做了一些语法扩展(添加了一些新的css特性)
// sass 语法中, 支持 单行注释,多行注释
// sass 的 选择器的嵌套语法
// 声明变量, 一般声明在所有嵌套语法的最外层, 变量必须以$开头
// 变量可以直接参与算术运算: + - * / %
$w:10px;
// 函数
// @function , @return 这样的指令 必须以@开头
@function calc_width( $width ){
@return $width * 10;
}
.list{
margin: $w;
.good{
// .list .good
display: flex;
.imgbox{
// .list .good .imgbox
width: calc_width($w);
margin-right: $w;
img{
// .list .good .imgbox img
//width: 100%;
width: calc_width($w);
}
}
.text{
// .list .good .text
/* line-height: 30px; */
.name{
// .list .good .text .name
font-weight: bold;
&:hover{
// .list .good .text .name:hover
color: red;
}
}
.price{
// .list .good .text .price
color: red;
}
.tags{
font-size: 12px;
span{
display: inline-block;
padding: 5px $w;
background-color: #f5f5f5;
border-radius: 5px;
margin-right: $w;
&:nth-child(1){
//.list .good .text .price span:nth-child(1)
background-color: lightcoral;
color: white;
}
&:nth-child(2){
//.list .good .text .price span:nth-child(2)
background-color: lightgreen;
color: white;
}
&:nth-child(3){
//.list .good .text .price span:nth-child(3)
background-color: lightseagreen;
color: white;
}
}
}
}
}
}
4.sass和less的区别
不同之处
-
less和sass的主要不同就是实现方式不同
Sass是基于Ruby的,是在服务器端处理
Less基于Javascript,是在客户端处理。
-
less使用较sass简单
-
sass功能比less强大
-
sass有变量和作用域
-
sass有函数的概念
-
进程控制
条件、循环遍历、继承、引用
-
数据结构
数组、map
-
-
less和sass处理机制不一样
前者是通过客户端处理的,后者是通过服务端处理。关于变量在less中是@,在sass中是用$