身为切图界的一员,或者说在前端界打滚了一段日子的你。会慢慢地发现。现在的css编写已经不能知足本身的效率。css
假设有更强大的框架,让你的css更灵活和更easy复用和维护,那该多好啊。很是明显,这个早已经不是什么新奇事,sass和less就是这么2个很是优秀的样式预处理器。能让你的效率高速提升。接下来就谈谈它们。前端
样式预处理器,简单地来归纳就是技术大牛经过一门新的语言,让css的编写具有各类变量和属性,你依照它的语法写好后,就能编译,生成对应的css文件。编程
固然这些处理器可以让你的css更简洁,易懂,具有更强的可移植性和维护性。浏览器
前端界里面,譬如Sass、LESS、Stylus、Turbine、Swithch CSS、CSS Cacheer、DT CSS等都是上面所说的样式预处理器。这里不一一介绍,我仅仅说一下比較优秀的sass和less。sass
LESS提供变量、嵌套、混合、操做符、函数等通常编程所需的抽象机制。框架
LESS和Sass的主要不一样就是他们的实现方式。LESS是基于JavaScript,是在client处理的。然而。Sass是基于Ruby的,是在server端处理的。less
很是多开发人员不会选择LESS因为JavaScript引擎需要额外的时间来处理代码而后输出改动过的CSS到浏览器。函数
但是LESS环境较Sass简单。这也使得很多的童鞋选择LESS。post
Sass使用“.scss”扩展名,而LESS使用“.less”扩展名。spa
$a: 14px; $b: #000; $C: solid .btn{ width: $a; border: 1px $C $b; }
@a: 14px; @b: #000; @C: solid .btn{ width: @a; border: 1px @C @b; }
body { padding: 5px; .head{ height: 10px; a { color: #000; &:hover { text-decoration: underline; } } } }
@mixin aq($borderWidth: 1px) { border: $borderWidth solid #F00; } .btn { padding: 5px; @include aq(2px); }在LESS里面。
.aq($borderWidth: 1px) { border: $borderWidth solid #F00; } .btn { padding: 5px; .aq(2px); }
.a { margin: 10px 5px; padding: 2px; } .b{ @extend .a; border: 1px solid #000; }
.a { margin: 10px 5px; padding: 2px; } .b{ .a; border: 1px solid #000; }
invert($color); /* 返回$color的反相色 */ lighten($color, 50%); /* 返回的颜色在$color基础上变亮50% */ saturate($color, 50%); /* 返回的颜色在$color基础上饱和度添加50% */ desaturate($color, 50%); /* 返回的颜色在$color基础上饱和度下降50% */ grayscale($color); /* 返回$color的灰度色*/ darken($color, 50%); /* 返回的颜色在$color基础上变暗50% */
invert(@color); /* 返回@color的反相色 */ lighten(@color, 50%); /* 返回的颜色在@color基础上变亮50% */ saturate(@color, 50%); /* 返回的颜色在@color基础上饱和度添加50% */ desaturate(@color, 50%); /* 返回的颜色在@color基础上饱和度下降50% */ grayscale(@color); /* 返回@color的灰度色*/ darken(@color, 50%); /* 返回的颜色在@color基础上变暗50% */
.a{ padding: (100px/2); top: 10px + 100px; left: 100px - 50px; top: 10 * 10; }