前端:Less编写css样式

2016-05-07  本文已影响0人  云沙前端
提要:
1. 什么是css预处理器?
2. 如何使用Less?
3. Less的特点
4. Less的优缺点

一 什么是css预处理

css 预处理是一种语言为css增加了一些编程的特征,并且无需考虑浏览器的兼容性,你可以在你的css样式中使用变量,简单的逻辑处理,甚至函数。
我的理解这个处理器就是把你的写的这些less,sass,stylus也好,统统转换成浏览器能识别的css样式。
目前比较普通的是这三款预处理架构、分别是
Sass(http://sass-lang.com/)
Less css(http://lesscss.org/
stylus(http://stylus-lang.com
Sass文件使用.sass拓展名,Less使用.less拓展名,相应的Stylus使用.styl拓展名。

二 如何使用Less

node环境下运行:npm install less
客户端使用Less的话,直接在项目中引入less.js文件即可。但要在.less 文件前引入。

三 Less 特点

a.使用变量

例如一些通用的颜色值,图片路径等,
使用变量的两个好处:多出利用和方便维护,只需要改变量值就行了。
less中变量名使用@符号开始,在Sass中则是使用$开头,在Stylus中无限制。

@mainColor: #333;
@width: 1024px;
span {
width: @width;
border: 1px solid @mainColor;
}

编译结果:

span {
 width:1024px;
border: 1px solid #333;
}

b. 使用嵌套语法

.TopBar {
       padding: 14px 0;
       border-bottom: 1px solid #eee; 
        line-height: 28px;
         

        .ddColor {
                color :#fff;
                a {
                    text-decoration:none;
                   &:hover {
                    border-width: 1px;
                    }
                  }
                }
              }

编译结果:

.TopBar {
      padding:14px 0;
      border-bottom: 1px solid #eee;
      line-height: 28px;
}

.TopBar  .ddColor {
     color:#fff;
 }
.TopBar .ddColor a {
  text-decoration: none;
}
.TopBar .ddColor a:hover {
  border-width: 1px;
}

这里之后的样式嵌套在.TopBar下,可以省略嵌套前的标签属性类等。

c. 运算符

css都能加减乘除了

@color: #111;
div {
background:@color+#222;

编译结果:

div {
 background: #333;
}

d.处理浏览器兼容

这个是我认为最实用的一个功能,避免了做重复的事情。
例如解决浏览器兼容问题,使用border-radius需要加上浏览器前缀,麻烦而且代码冗余。

.border-radius(@values){
  -webkit-border-radius: @values;
     -moz-border-radius: @values;
          border-radius: @values;
}
div {
     @border-raduis(10px);
}

编译结果:

div {
  -webkit-border-radius: 10px;
     -moz-border-radius: 10px;
          border-radius: 10px;
}
.transition(@transition) {
  -webkit-transition: @transition;
  -moz-transition: @transition;
  -o-transition: @transition;
   transition: @transition;
}
a{@transition(all 0.4s);}

编译结果:

a {
  -webkit-transition: all 0.4s;
  -moz-transition: all 0.4s;
  -o-transition: all 0.4s;
   transition: all 0.4s;
}

e:Mixins(混入)

有点类似与js定义的全局变量,到处都能直接调用。
例如:定义了一个错误提示,字体变大变红。

.error(@fontsize:20px){
    font-size:@fontsize;
    color:red;
}

其他地方直接调用@error(10px);即可。

f:less的导入

less中可以导入css文件也可以导入less文件。导入css文件会保持原样,less文件会被编译。并且less的导入不要求放在顶部。

@import"untils";
@import"bootstrap-theme";

这里并没有指定less后缀文件,导入时会默认为less文件,等同于

@import"untils.less";
@import"bootstrap-theme.less";


例如:
span {
 @import"bootstrap-theme";
}

那么这里导入的样式将作用于span标签。
甚至还可以针对媒体查询的结果来指定导入less文件
例如

@import"untils.less"screen and (max-width:400px);
编译结果:
@media screen and(max-width:400px){
untils.css样式........
}

g. less 中使用注释

单行注释使用// 或者css的注释符号,多行注释使用

//Hi, I'm a slient comment.

.class {color:white}
.class{color: white}

大概总结了一下Less的优缺点:

优点:
a. css的语法不够强大,需要重复书写很多重复的选择器.less刚好解决了这一问题。
b. 提供变量和逻辑控制
c. 合理的样式复用机制  减少代码的冗余
d. 提高代码的可维护性
e. mixin混入

缺点:
a. 也需花费一定时间去了解学习使用这个预处理,团队协作的难度加大
b. 个人感觉是css本来就是很简单的东西,less中的有些处理反而让它变得更复杂。
上一篇下一篇

猜你喜欢

热点阅读