在项目开发中,为了方便样式的复用和规范化,通常都会统一一些公共的样式类,如果用传统的css来写就会显得很臃肿。
最近看了看接手的项目的公共css文件,发现很多重复的样式声明,还有全局的样式使用不统一问题。
例如下图,就有很多重复的声明,并且代码看起来也不太优雅!下面使用scss来优化一下。
$primary:#4e9afe;
$success:#07c160;
$danger:#ed151c;
$yellow:orange;
$green:green;
$violet:violet;
$default:#8a8a8a;
$colors: (
primary: $primary,
danger: $danger,
success: $success,
yellow: $yellow,
green: $green,
violet: $violet,
default:$default,
grey:#8a8a8a
);
@mixin button {
border-radius: 20px;
padding: 3px 8px;
font-size: 14px;
}
//正常按钮
@mixin btnOrigin($btn_them) {
color: #fef4e9;
background: #{$btn_them};
@include button;
}
//线条按钮
@mixin btnLine($btn_them) {
color: $btn_them;
border: 1rpx solid $btn_them;
@include button;
}
@each $name, $color in $colors {
.#{$name} {
&-color {//生成颜色类目
color: $color;
}
&-btn {//按钮
@include btnOrigin($color);
&:active {
@include btnOrigin(rgba($color, 0.4));
}
}
&-line-btn {//线条按钮
@include btnLine($color);
&:active {
@include btnLine(rgba($color, 0.4));
}
}
}
}
按照上面的方法,生成的类.primary-btn、.danger-btn,primary-line-btn等样式类,类名可以自定义拼接的。
如primary-line-btn按钮
.primary-line-btn {
color: #4e9afe;
border: 1rpx solid #4e9afe;
border-radius: 20px;
padding: 3px 8px;
font-size: 14px;
}
.primary-line-btn:active{
....
}
@each $name, $color in $colors {
.#{$name} {
&-btn {
@include btnOrigin($color);
@if #{$name}=='grey' {
color: black;
&:active {
color:rgba(black,0.5)!important;
}
}
&:active {
@include btnOrigin(rgba($color, 0.4));
}
}
}
}
生成font-size从12到20的类,类名是fs-12,fs-13…
@for $i from 12 to 20 {
.fs-#{$i} {
font-size: #{$i}px;
}
}
生成的类名是w-10,w-25…
$ws:(
10,15,20,25,30,35,40,45,50,60,70,80,90,100,98,95,85,
)
@each $i in $ws{
.w-#{$i}{
width: #{$i}+'%'
}
}
以上只是小部分举例应用,都大同小异,实际上还可以灵活使用生成各种各式的样式、提高我们的样式代码灵活度,最后想说:真正使用上scss还是很香的!