Less 简介

简单来说,Less 就是让你在网页设计的时候,可以更方便地写 CSS 的工具。

Less官网的说明:

LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算,函数.

LESS 既可以在客户端上运行(支持IE 6+, Webkit, Firefox),

也可以借助Node.js或者Rhino在服务端运行。

也就是说,你可以透过 Less 的语法使用 变量, 继承, 运算 和函数 这些工具,

再通过编译之后,less 就可以转成一般的 CSS,

于是让设计 CSS 这件事可以更加地有弹性。

// LESS

@color: #4D926F;

#header {

color: @color;

}

h2 {

color: @color;

}
编译出来的 CSS:

#header {

color: #4D926F;

}

h2 {

color: #4D926F;

}

=====================================

混合

mixins让你可以重覆利用某些样式的宣告,

你可以在 A 样式里面包括另一个 B class,

所有被 B class 的样式都会被嵌入进来 A 这个样式设定。

.bordered { border-top: dotted 1px black; border-bottom: solid 2px black; }

那如果我们现在需要在其他class中引入那些通用的属性集,

那么我们只需要在任何class中像下面这样调用就可以了:

#menu a { color: #111; .bordered; }

下面是转出来的 CSS:

#menu a { color: #111; border-top: dotted 1px black; border-bottom: solid 2px black; }

===========================================

带参数混合

这个最好用的地方就是在简化一些比较不好写的 css, 例如 CSS3 的圆角设定,

目前因为浏览器的语法尚未统一,你需要写:

通过Less, 你只要写:

.border-radius (@radius) {

border-radius: @radius;

-moz-border-radius: @radius;

-webkit-border-radius: @radius;

}

header {

.border-radius(4px);

}

.button {

.border-radius(6px);

}

=======================================

less 提供的主要功能

arguments 变量

@arguments包含了所有传递进来的参数。

例如 CSS3 的阴影设定:

.box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) {
box-shadow: @arguments;
-moz-box-shadow: @arguments;
-webkit-box-shadow: @arguments;
}
#nav{
.box-shadow(2px, 5px);
} #nav{
box-shadow: 2px 5px 1px #000;
-moz-box-shadow: 2px 5px 1px #000;
-webkit-box-shadow: 2px 5px 1px #000;
}

===============================

函数 & 运算

通常在设计 button 或是 border 的样式的时候,我们常常会需要一个

跟原本差不多的颜色。可能是亮一点点、暗一点点、或是鲜艳一点点

(例如:当做 button 一般的颜色、hover 上去的颜色, 点下去的颜色)。

而这样的东西,传统上我们是用 RGB 在调色盘上设好再设到 CSS 里,

但如果你对 HSB (色相、明亮度、饱和度)有那麽一点直觉的话,

Less 里面也可以让你直接用 function 来设定,

而输出来的 css,就会自动帮你算好相对应的 RGB 。例如:

// LESS
@base-color: #111;
@red: #842210;
#footer {
color: @base-color + #003300;
// 饱和度降低 10%
border-color: desaturate(@red, 10%);
}
转换之后css

#footer {
color: #114411;
border-color: #7d2717;
}

======================================

模式匹配和导引表达式

有些情况下,我们想根据传入的参数来改变混合的默认呈现,比如下面这个例子:

// LESS
.mixin (dark, @color) {
//亮度降低 10%
color: darken(@color, 10%);
}
.mixin (light, @color) {
//亮度增加 10%
color: lighten(@color, 10%);
}
.mixin (@_, @color) {
display: block;
}

运用到class上

.class {

.mixin(light, #888);

}

转换之后css

.class {

color: #a2a2a2;

display: block;

}

==============================================

具体实现如下:

第一个混合定义并未被匹配,因为它只接受dark做为首参

第二个混合定义被成功匹配,因为它只接受light

第三个混合定义被成功匹配,因为它接受任意值

只有被匹配的混合才会被使用。变量可以匹配任意的传入值,

而变量以外的固定值就仅仅匹配与其相等的传入值。

导引

//lightness(@a) 从颜色值中提取 'lightness' 值(亮度)
.mixin (@a) when (lightness(@a) >= 50%) {
background-color: black;
}
.mixin (@a) when (lightness(@a) <%) {
background-color: white;
}
.mixin (@a) {
color: @a;
}
.class1 { .mixin(#ddd) }

.class2 { .mixin(#555) }
.class1 {
background-color: black;
color: #ddd;
} .class2 {
background-color: white;
color: #555;
}

当我们想根据表达式进行匹配,而非根据值和参数匹配时,导引就显得非常有用。

LESS快速入门的更多相关文章

  1. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  2. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  3. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  4. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  7. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  8. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  10. Vue.js 快速入门

    什么是Vue.js vue是法语中视图的意思,Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API.作者是尤雨溪,写下这篇文章时vue.js版本为1.0.7 准备 我推荐 ...

随机推荐

  1. 为什么JavaScript开发如此疯狂

    本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! Web开发太有意思了! 但是JavaScript则……令人望而生畏. Web开发中其他一切对你而言都是小菜一碟, ...

  2. 黑马程序员_<<GUI(图形用户界面)--------1>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1.  GUI图形用户界面 1.简述 Gra ...

  3. UNITY打包问题

    1,打包有二种,打包可执行程序-player,打包资源包-assetbundle 2,打包player后,在PC平台去看打包后对应的资源大小,发现比原始资源小得多,模型资源压缩率约60%,图资源压缩率 ...

  4. 配置nginx如果获取不到图片 去另外一台服务器获取

    配置nginx服务器从一台服务器如果获取不到图片 从另外一台服务器中获取 location ^~ /uploads/ { root /data/weiwend/weiwang; try_files $ ...

  5. jvm内存GC详解

    一.相关概念  a. 基本回收算法 1. 引用计数(Reference Counting)  比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收 ...

  6. 三种排序算法python源码——冒泡排序、插入排序、选择排序

    最近在学习python,用python实现几个简单的排序算法,一方面巩固一下数据结构的知识,另一方面加深一下python的简单语法. 冒泡排序算法的思路是对任意两个相邻的数据进行比较,每次将最小和最大 ...

  7. css3 -&gt; 多栏布局

    在进行多栏布局时.使用bootstrap的栅格系统能够非常轻松的实现效果,事实上css3本身也提供了多兰布局的功能. 比方,我们在一个section标签内填充了非常多内容.同一时候希望内容可以显示成三 ...

  8. 后台进程弹Toast的几种方案

    在后台进程弹Toast,使用方案有:由UI线程传入一个Activity參数.View參数或者Handler參数,使用Activity.runOnUiThread(Runnable).View.post ...

  9. vxworks

    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统.Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似Mi ...

  10. dubbo注册服务IP解析异常及IP解析源码分析

    在使用dubbo注册服务时会遇到IP解析错误导致无法正常访问. 比如: 本机设置的IP为172.16.11.111, 但实际解析出来的是180.20.174.11 这样就导致这个Service永远也无 ...