预处理器之Less基础

less基本知识总结

一款比较流行的预处理CSS,支持变量、混合、函数、嵌套、循环等特点

官网

中文网

http://www.w3cplus.com/css/less

概要

(1)为什么要有预处理CSS

CSS基本上是设计师的工具,不是程序员的工具。在程序员的眼里,CSS是很头痛的事情,它并不像其它程序语言,比如说PHP、Javascript等等,有自己的变量、常量、条件语句以及一些编程语法,只是一行行单纯的属性描述,写起来相当的费事,而且代码难易组织和维护。

很自然的,有人就开始在想,能不能给CSS像其他程序语言一样,加入一些编程元素,让CSS能像其他程序语言一样可以做一些预定的处理。这样一来,就有了“CSS预处器(CSS Preprocessor)”。

(2)什么是预处理CSS

a. CSS语言的超集,比CSS更丰满

b. CSS预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。通俗的说,CSS预处理器用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,以供项目使用。CSS预处理器为CSS增加一些编程的特性,无需考虑浏览器的兼容性问题,例如你可以在CSS中使用变量、简单的逻辑程序、函数等等在编程语言中的一些基本特性,可以让你的CSS更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处。

c.CSS预处理器技术已经非常的成熟,而且也涌现出了很多种不同的CSS预处理器语言,比如说:Sass(SCSS)、LESS、Stylus、Turbine、Swithch CSS、CSS Cacheer、DT CSS等。如此之多的CSS预处理器,那么“我应该选择哪种CSS预处理器?”也相应成了最近网上的一大热门话题,在Linkedin、Twitter、CSS-Trick、知呼以及各大技术论坛上,很多人为此争论不休。相比过计我们对是否应该使用CSS预处理器的话题而言,这已经是很大的进步了。

到目前为止,在众多优秀的CSS预处理器语言中就属Sass、LESS和Stylus最优秀,讨论的也多,对比的也多。本文将分别从他们产生的背景、安装、使用语法、异同等几个对比之处向你介绍这三款CSS预处理器语言。相信前端开发工程师会做出自己的选择——我要选择哪款CSS预处理器。

如何使用预处理Less

less.js

(1)> 网页运行阶段解析LESS文件

使用方式:less compiler

1 (切换路径)>lessc main.less>main.css

(2)> 开发阶段编译LESS文件成为CSS

使用方式:

  • 安装Node.js
  • 安装less
    • 命令行执行:npm install -g less

less的 注释

// 模板注释,这里的注释转换成CSS后将会删除
/* CSS 注释语法 转换为CSS后任然保留 */

定义变量

将需要重复使用或经常修改的值定义为变量,需要使用的地方引用

   @变量名: 变量值;
   @bgColor: #f5f5f5;
 
   body{
     width: @变量名;
     background-color: @bgColor;
   }
   body{
     width: 变量值;
     background-color: #f5f5f5;
   }

嵌套

如果你在CSS中经常使用子代选择器,那LESS的嵌套语法使用起来非常Happy

  .container {
     width: @containerWidth;
     > .row {
       height: 100%;
       a{
         color: #f40;
         &:hover{
           color: #f50;
         }
       }
     }
     div {
       width: 100px;
       .hello {
         background-color: #00f;
       }
     }
   }
  .container {
     width: 1024px;
   }
   .container > .row {
     height: 100%;
   }
   .container > .row a {
     color: #f40;
   }
   .container > .row a:hover {
     color: #f50;
   }
   .container div {
     width: 100px;
   }
   .container div .hello {
     background-color: #00f;
   }

混合Mixin

 /* 定义一个类 */
 .roundedCorners(@radius: 5px) {
   -moz-border-radius: @radius;
   -webkit-border-radius: @radius;
   border-radius: @radius;
 }
 /* 定义的类应用到另个一个类中 */
 #header {
   .roundedCorners;
 }
 #footer {
   .roundedCorners(10px);
 }

Import

我们可以在开发阶段将样式放到多个文件中,最后通过@import 的方式合并;注意:异步请求的时候必须在http下面使用;

   // main.less
   @btnColor: red;
   @import url('_buttom.less');
   
   body{
     width: 1024px;
   }
 
   // _buttom.less
   .btn{
     color: @btnColor;
   }
   .btn{
     color: red;
   }
   body{
     width: 1024px;
   }

案例代码:

 // hello less
 // 定义一个变量
 // @mainColor: #e92322;
 // @width: 200px;
 // /* 公共样式 */
 // body {
 //   background-color: @mainColor;
 // }
 // .container {
 //   width: 1000px;
 //   background-color: #ff0;
 //   .row {
 //     height: @width;
 //     div {
 //       border-left: 1px solid @mainColor;
 //       > a {
 //         color: red;
 //         &:hover {//相当于this;不加&有空格,不实现效果
 //           color: green;
 //         }
 //       }
 //     }
 //   }
 // }
 /* 定义一个类 */
 // // 定义一个代码段,()里的内容是参数,参数中:后的内容是参数的默认值(没有传参数)
 // .roundedCorners(@radius: 5px) {
 //   -moz-border-radius: @radius;
 //   -webkit-border-radius: @radius;
 //   border-radius: @radius;
 // }
 // /* 定义的类应用到另个一个类中 */
 // #header {
 //   .roundedCorners();
 // }
 // #footer {
 //   .roundedCorners(10px);
 // }
 //
 // @h: 100px;
 // @import url('_p.less');
 body {
   background-color: lighten(#000, 10%);
   color: darken(#fff, 10%);
 }

函数

内置函数

 - lighten:将一个颜色变亮
   + lighten(#000, 10%); // #1a1a1a
 - darken:将一个颜色变暗
   + darken(#000, 10%); // #e6e6e6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZemanZhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值