美文网首页
前端:Less编写css样式

前端:Less编写css样式

作者: 云沙前端 | 来源:发表于2016-05-07 16:09 被阅读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中的有些处理反而让它变得更复杂。
    

    相关文章

      网友评论

          本文标题:前端:Less编写css样式

          本文链接:https://www.haomeiwen.com/subject/zcxsrttx.html