# CSS 预编译
# Sass
# 1、变量使用
定义一个变量,多处可以重复使用。
$color: #fff;
$left: left;
.index {
border: 1px solid $color;
background-color: $color;
border-#{$left}-top-radius: 10px;
}
# 2、嵌套
使用&代替父选择器,用来处理一些伪类或者 active 样式。
$color: #fff;
.index {
.index-header {
border: 1px solid $color;
}
// hover
&:hover {
background-color: blue;
}
// 切换类名,和index同级别,不用写在外面
&.index-active {
background-color: red;
}
}
# 3、继承
使用占位符%定义一个代码块,然后使用@extend 在另一个类中继承。也可以直接继承另一个类的属性。
$color: #fff;
%message-shared {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
. .index {
@extend %message-shared;
}
.main {
@extend .index;
}
# 4、混入
使用@mixin 定义一个代码块,然后使用@include 来引入,就可以把这个代码块引入重复使用。它的方便之处在于可以指定参数和缺省值。
定义一个混入
$color: #fff;
@mixin center {
display: flex;
align-items: center;
justify-content: center;
}
.index {
@include center;
border: 1px solid $color;
}
传参
$color: #fff;
// 定义一个默认值为1px的参数
@mixin border($width: 1px) {
border: $width solid #ccc;
}
.index {
@include border; // => border: 1px solid #ccc;
&-header {
@include border(10px); // => border: 10px solid #ccc;
}
}
# 5、高级用法
数据类型、加减乘除运算、函数、循环、条件判断。https://www.sass.hk/docs/ (opens new window)
# 6、其他常见处理样式
1、&父选择器用法
// list-item元素之间添加一个边距,第一个不加,只加后面的元素。
.list {
.list-item {
display: block;
& + .list-item {
margin-left: 10px;
}
}
}
// 代替父类,只能替换父级的名
.index {
.index-header {
}
.index-banner {
}
}
.index {
&-header {
}
&-banner {
}
}
# Less
# 1、变量使用
定义一个变量,多处可以重复使用。
@color: #fff;
@left: left;
.index {
border: 1px solid @$color;
background-color: @color;
}
# 2、嵌套
使用&代替父选择器,用来处理一些伪类或者 active 样式。
@color: #fff;
.index {
.index-header {
border: 1px solid @color;
}
// hover
&:hover {
background-color: blue;
}
// 切换类名,和index同级别,不用写在外面
&.index-active {
background-color: red;
}
}
# 3、混入
直接定义一个类,然后引入,less 没有传参。
@color: #fff;
.center {
display: flex;
align-items: center;
justify-content: center;
}
.index {
.center();
border: 1px solid @color;
}