Less.js

安装

npm install -g less


变量

basic

变量采用@进行变量定义。变量可以直接参加运算。

@width:100px;
.variables{
width:@width;
height: @width+50px; (变量运算之后,不加px单位也可)
}

作用域 scope

Less 中的作用域与 CSS 中的作用域非常类似。首先在本地查找变量和混合(mixins),如果找不到,则从“父”级作用域继承。

<div id="nesting">
<div>
<div />
</div>
</div>
#nesting{
width:200px;
height:300px;
background-color: @color;
@color:#66aa44; //绿色
div{
width: 200px;
height: 150px;
background-color:#ff0000;
@color:#7a6ff4;//蓝紫色
div{
width: 200px;
height: 75px;
background-color:@color;
}
}
}

第三个div的background-color是使用的变量@color,但是本地并没有这个变量定义,便在上一个父级寻找此变量。在上一级寻找到变量之后,即使再上一级也定义过此变量,也不采用。


Mixins

basic

Less.js的Mixin是直接在less代码里直接加入选择器和()。使用id选择器#作为被mix的代码也可以。

.a{
color:#000000;
background-color: shade((#ff0000),50%) ;//棕色
border:3px solid black
}
.b{
.a(); /* #a()也可行,如果定义了 */
background-color: #00ff00;//绿色
}

如果被mix的代码重写了mix代码中的某一个属性,重写代码生效。(棕色变为了绿色)

bundle

出于方便的原因,可以将mix代码集合到bundle里然后进行分发。

 <div class="div-style" id="nesting" />
#bundle(){
.a{
color:#000000;
background-color: #ff9843 ;
border:3px solid black
}
.blank{
color:#883743
}
}
.div-style{
#bundle.a();
}

#bundle非关键字,可以使用其他变量代替

#test(){
.a{
color:#000000;
background-color: #ff9987 ;
border:3px solid black
}
}
.div-style{
#test.a();
}

映射 Maps

将混合(mixins)和规则集(rulesets)作为一组值的映射(map)使用。

我的理解:将相同属性的变量集合到一起,需要使用时再进行分发。

#colors(){
first:#a9ff62;
secondary:#f7f4a3
};
#test(){
.a{
color:#000000;
background-color:#colors[first] ;
border:3px solid black
}
}
.div-style{
#test.a();
}


嵌套

嵌套的规则和Js的规则几乎一致。

<div id="nesting">
<div>
<div />
</div>
</div>
#nesting{
width:200px;
height:300px;
background-color: @color;
@color:#66aa44; //绿色
div{
width: 200px;
height: 150px;
background-color:#ff0000;
@color:#7a6ff4;//蓝紫色
div{
width: 200px;
height: 75px;
background-color:@color;
}
}
}

也可以使用&:伪元素的方式,嵌套伪元素结构。


函数

函数作为less一个非常重要的功能,能够帮助js处理一些非逻辑层面的计算。

.a{
color:#000000;
background-color: shade((#ff0000),50%) ;
border:3px solid black
}

颜色处理函数shade(),可以将被处理颜色(代码里是#ff0000),按照距离#000000的权重,进行变色(简单说就是加深多少 )

Less中Css预处理器的更多相关文章

  1. CSS 预处理器中的循环

    本文由 nzbin 翻译,黄利民 校稿.未经许可,禁止转载! 英文出处:css-tricks.com 发表地址:http://web.jobbole.com/91016/ 如果你看过老的科幻电影,你一 ...

  2. css预处理器sass使用教程(多图预警)

    css预处理器赋予了css动态语言的特性,如变量.函数.运算.继承.嵌套等,有助于更好地组织管理样式文件,以及更高效地开发项目.css预处理器可以更方便的维护和管理css代码,让整个网页变得更加灵活可 ...

  3. 关于前端CSS预处理器Sass的小知识!

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  4. CSS预处理器Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  5. Myth – 支持变量和数学函数的 CSS 预处理器

    Myth 是一个预处理器,有点类似于 CSS polyfill .Myth 让你写纯粹的 CSS,同时还让你可以使用类似 LESS 和 Sass 的工具.您仍然可以使用变量和数学函数,就像你在其它预处 ...

  6. 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  7. 160907、CSS 预处理器-Less

    CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...

  8. CSS预处理器实践之Sass、Less大比拼[转]

    什么是CSS预处理器? CSS可以让你做很多事情,但它毕竟是给浏览器认的东西,对开发者来说,Css缺乏很多特性,例如变量.常量以及一些编程语法,代码难易组织和维护.这时Css预处理器就应运而生了.Cs ...

  9. CSS预处理器Sass(Scss)、Less、Stylus

    CSS 预处理编译器能让我成程序化其的方式编写CSS代码,可以引入CSS中没有的变量.条件.函数等特性,从而让代码更简单易维护,但一般按预处理器语法编写的代码无法直接在浏览器中运行,需用通过工具比如g ...

随机推荐

  1. 阿里云服务器Centos7上使用Nginx部署https协议的网站

    1,申请域名证书成功后,下载压缩包,一定要选择Nginx的证书类型,解压后得到一个key文件一个pem文件,将这两个文件上传到服务器的root目录 2,打开nginx配置文件 vim /etc/ngi ...

  2. python绘制美丽花朵

    from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import Line ...

  3. 7.mysql8.0版本MGR搭建

    搭建MGR 1.配置文件 loose-group_replication_ip_whitelist = 192.168.124.0/24 loose-group_replication_start_o ...

  4. [论文分享] DHP: Differentiable Meta Pruning via HyperNetworks

    [论文分享] DHP: Differentiable Meta Pruning via HyperNetworks authors: Yawei Li1, Shuhang Gu, etc. comme ...

  5. springboot项目配置数据库

    在pom.xml文件中配置 <!-- mybatis整合springboot起步依赖--> <dependency> <groupId>org.mybatis.sp ...

  6. Offer快到碗里来,Volatile问题终结者

    微信公众号:大黄奔跑关注我,可了解更多有趣的面试相关问题. 写在之前面试问题概览面试回顾大黄可见性Demo演示小插曲大黄可见性Demo演示小插曲大黄可见性Demo演示小插曲总结番外 写在之前 Hell ...

  7. [leetcode]404. Sum of Left Leaves左叶子之和

    弄个flag记录是不是左节点就行 int res = 0; public int sumOfLeftLeaves(TreeNode root) { if (root==null) return res ...

  8. js实现页面消息滚动效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Socket.io详解

    socket.io是一个跨浏览器支持WebSocket的实时通讯的JS. http://socket.io/docs/ 由于HTTP是无状态的协议,要实现即时通讯非常困难.因为当对方发送一条消息时,服 ...

  10. JAVA Executor(线程池)框架

    一.Executor概述 为更好控制线程,jdk提供一套线程管理框架Executor,帮助开发人员有效地进行线程控制.它们都位于java.util.concurrent包中,是jdk并发包的核心.其中 ...