为什么使用less?
常用的css预编译技术有sass、less、Stylus,三者各有特点。
sass:出现最早,需要依赖ruby,推荐使用scss的语法编写;
less:可使用sass的语法,又兼容css的语法,相比简单易上手;
Stylus:来自node社区,主要给node项目做预编译。
相比来说,更推荐less。
- 学习成本低,会css和js可以很方便学习less,不像sass,需要花费一定时间重新学习一门语言;
- 搭建成本低,页面应用less.js或node安装即可使用,sass还需要安装ruby;
- 应用范围广,如bootstrap、ant等等前端框架都是less编写。
入门两点语法
一、变量
变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用。所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了。
// LESS
@color: #4D926F;
#header {
color: @color;
}
h2 {
color: @color;
}
编译成css如下:
#header {
color: #4D926F;
}
h2 {
color: #4D926F;
}
二、嵌套
我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。
// LESS
#header {
h1 {
font-size: 26px;
font-weight: bold;
}
p { font-size: 12px;
a { text-decoration: none;
&:hover { border-width: 1px }
}
}
}
编译css如下:
#header h1 {
font-size: 26px;
font-weight: bold;
}
#header p {
font-size: 12px;
}
#header p a {
text-decoration: none;
}
#header p a:hover {
border-width: 1px;
}
类似js的局部变量的意思,css编写更清晰明了。
学会这两点,可以做到:
- 定制化主题换肤功能,通过给颜色、字体大小、内外边距值等设置变量,单独放置,后期直接更改变量值实现换肤的功能;
- 通过嵌套编写组织结构清晰的css,避免命名污染,一个组件内css嵌套在最外层的class名内,就算重复,也不会影响。
- 就算面试问到less的问题,这两点也足够应付,你的面试官不会告诉你,他也记不住那么多语法(嘘!亲身经历。。。)