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. .NET5 API 网关Ocelot+Consul服务注册

    1|0网关介绍 网关其实就是将我们写好的API全部放在一个统一的地址暴露在公网,提供访问的一个入口.在 .NET Core下可以使用Ocelot来帮助我们很方便的接入API 网关.与之类似的库还有Pr ...

  2. 使用aspnet_compiler对web程序进行预编译

    前言 本例使用的是asp.net中的webform项目,使用.net框架为.net3.5 操作步骤 正常的web项目发布步骤 发布方法:文件系统 目标位置:发布后的项目文件的路径,可自定义. 打开wi ...

  3. Dubbo服务暴露源码解析②

    目录 0.配置解析 1.开始export 2.组装URL 3.服务暴露 疑问解析 ​ 先放一张官网的服务暴露时序图,对我们梳理源码有很大的帮助.注:不论是暴露还是导出或者是其他翻译,都是描述expor ...

  4. vue-style-loader源码初步分析

    背景: 首先声明一下,我只是个菜鸡,为了解决问题才去看的源码,解决完问题之后也就没有兴趣看其他部分代码了,所以这篇文章是一次很低层次的解读,角度也相当片面,想必会有很多喷点吧. 事情的经过是这样,今年 ...

  5. 论文阅读LR LIO-SAM

    Abstract 紧耦合lidar inertial里程计, 用smoothing和mapping. 1. Introduction 紧耦合lidar-inertial里程计. 紧耦合的lidar i ...

  6. Android 音视频开发(一):PCM 格式音频的播放与采集

    什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样.量化.编码三个过程将模拟信号数字化. 采样 顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集 44100 ...

  7. Spring 之AOP AspectJ切入点语法详解

    记录一下,以后学习 https://blog.csdn.net/zhengchao1991/article/details/53391244

  8. CI持续集成理论知识

    (1)什么是CI What is CI? CI就是持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过 ...

  9. 各开源协议BSD、Apache Licence 2.0、GPL

    以下是上述协议的简单介绍:BSD开源协议BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有 ...

  10. 深入理解linux-free命令原理(2)

    linux free 命令用法说明 概述: 这篇文章比较深入的从free为起点  折射出的一些概念:比如  buff/cache是怎么一回事[涉及内存页等话题]:  available这个参数与fre ...