正如各位所知道的一样,css是一门标记性语言,语法相对简单,对使用者的要求也比较低 。不过可乐不知道友友们有没有发现,在使用css的时候需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于一些缺乏css编写经验的猿猿来讲,写出组织良好且易于维护的 CSS 代码是相当困难的一件事情。这个时候呢,可乐悄悄地告诉你们,咱们的程序员蜀黍是无所不能的,针对这个调皮的css,专门开发了less语言。那么,就由可乐来细细为你们介绍这一个新朋友吧~~~

一、less简介:

1、less语言是在css的语法基础上,引入了变量,Mixin(混入),运算,以及函数等功能,可以让我们用更少的代码做更多的事情哦!

二、.less引入(两种方式):

1、客户端使用.less文件:先要从http://lesscss.org下载 less.js 文件,然后在我们需要引入 LESS 源文件的 HTML 中加入如下代码:

<link rel="stylesheet/less" type="text/css" href="styles.less">
 

注意,此处的rel属性值是“stylesheet/less”哦。

还有一点就是:less源文件一定要在less.js引入之前引入,才能保证less源文件正确编译解析:

<script src="../less.min.js"></script>

2、在服务器端使用:主要是借助于LESS的编译器,将less源文件编译生成最终的css文件(推荐);

LESS 在服务器端的使用主要是借助于 LESS 的编译器,将 LESS 源文件编译生成最终的 CSS 文件,目前常用的方式是利用 node 的包管理器 (npm) 安装 LESS,安装成功后就可以在 node 环境中对 LESS 源文件进行编译。

在项目开发初期,我们无论采用客户端还是服务器端的用法,我们都需要想办法将我们要用到的 CSS 或 LESS 文件引入到我们的 HTML 页面或是桥接文件中,LESS 提供了一个我们很熟悉的功能— Importing。我们可以通过这个关键字引入我们需要的 .less 或 .css 文件。 如:

@import “variables.less”;

.less 文件也可以省略后缀名,像这样:

@import “variables”;

引入 CSS 同 LESS 文件一样,只是 .css 后缀名不能省略。

三、.less语法简介:

1、变量:一次定义,重复使用:

@color:#505253;
.bg-color{
background-color:@color;
}
.border-color{
border:1px solid @color;
}

如上所示: @color 就是可乐刚刚定义的变量,在 .bg-color 和 .border-color 当中都可以使用它

2、混入--Mixins:申明一个类,然后在其它类中调用当前这个类

.roundeCorers(@radius:5px){
-moz-border-radius:@radius;
-webkit-border-radius:@radius;
border-radius:@radius;
} #header{
.roundeCorers;
} #footer{
.roundeCorers(10px);
}

可乐注释一下:其中 @radius 是参数,不穿参数时,默认值为 5px ,如 #header 中的用法。

3.继承

有一个类用了一组样式,又写了一个类也想用这个样式,可继承上个类的样式,如:

基础css样式:

.base-style {
font-size: 12px;
color: red;
}

第一种继承写法:

.content{
.base-style();
background-color: white;
}

第二种继承写法:

.content{
&:extend(.base-style);
background-color: white;
}

两写法不同,编译后生成的CSS样式也不一样

第一种:

.base-style{
font-size: 12px;
color: red;
} .content {
font-size: 12px;
color: red;
background-color: white;
}

第二种:

.base-style,
.content{
font-size: 12px;
color: red;
}
.content {
background-color: white;
}

4、嵌套规则:

html:

<div id="header">
<h1><a href="">www.xdpie.com</a></h1>
<p>自游自驾</p>
</div>

LESS:

#header {
display: inline;
float: left;
h1 {
font-size: 26px;
font-weight: bold;
a {
text-decoration: none;
color: #f36;
&:hover {
text-decoration: underline;
color: #63f;
}
}
}
p {
font-size: 12px;
}
}

5、功能和操作:

可乐给大家一个网址,供大家参考:

http://less.bootcss.com/functions/

6、逻辑控制:

LESS是用mixin通过guard的方式支持简单图瓦人分支控制,
比如我们要实现一个控制 ::placeholder 样式的 mixin,当传入颜色时只设置颜色,当传入声明块时输出对应的样式规则,其他情况输出一个默认的 color

.mixin(@val) when (iscolor(@val)) {
color: @val;
}
.mixin(@val) when (isruleset(@val)) {
@val();
}
.mixin(@val) when (default()) {
color: #666;
}

可乐提示一下哈:default() in guards acts as else

好啦,对less的主要用法呢,可乐就讲这么多,最后再给一些友情提示,希望对各位博友们有帮助哦~~~

预编译CSS有哪些:

Sass(Scss),Less,Stylus

Sass官网:http://sass-lang.com/   http://www.w3cplus.com/sassguide/

Less官网:http://lesscss.org/      中文:http://less.bootcss.com/

Stylus文档:http://learnboost.github.io/stylus/

LESS和SCSS对比:https://css-tricks.com/sass-vs-less/

LESS和SCSS分别有哪些项目和书籍可作为参考:

1、Bootstrap 用了LESS

2、sass与compass实战一书 主要讲解了Sass用法

浅谈css的预编译---less语言的更多相关文章

  1. 浅谈VC++中预编译的头文件放那里的问题分析

    用C++写程序,肯定要用预编译头文件,就是那个stdafx.h.不过我一直以为只要在.cpp文件中包含stdafx.h 就使用了预编译头文件,其实不对.在VC++中,预编译头文件是指放到stdafx. ...

  2. 浅谈 MySQL的预编译

    之前的一篇 Mybatis中 #{}和${}的区别 中涉及到通过 SQL预编译和 #{} 传值 的方式防止SQL注入. 由此引发了想了解预编译的想法.那么什么是预编译那? 一.三个阶段: 词法和语义解 ...

  3. 转:浅谈CSS在前端优化中一些值得注意的关键点

    前端优化工作中要考虑的元素多种多样,而合理地使用CSS脚本可以在很大程度上优化页面的加载性能,以下我们就来浅谈CSS在前端优化中一些值得注意的关键点: 当谈到Web的“高性能”时,很多人想到的是页面加 ...

  4. 浅谈 CSS 预处理器: 为什么要使用预处理器?

    CSS 自诞生以来,基本语法和核心机制一直没有本质上的变化,它的发展几乎全是表现力层面上的提升.最开始 CSS 在网页中的作用只是辅助性的装饰,轻便易学是最大的需求:然而如今网站的复杂度已经不可同日而 ...

  5. 浅谈CSS模块化

    为什么要CSS模块化? 你是否为class命名而感到苦恼? 你是否有怕跟别人使用同样class名而感到担忧? 你是否因层级结构不清晰而感到烦躁? 你是否因代码难以复用而感到不爽? 你是否因为commo ...

  6. 浅谈独立使用NDK编译库文件(Android)

    阅读前准备 这是一篇相对入门的文章.文中会涉及到少许NDK的知识,但个人认为对初学者来说都相对比较实用,因为都是在平时项目中遇到的(目前自己也是初学者).一些其他高深的技术不再本文探讨范围之内(因为我 ...

  7. 浅谈CSS盒子模型

    [摘要]盒子模型是CSS中的一个重要概念,虽然CSS中没有盒子这个单独的属性对象,但它却是CSS中无处不在的一个重要组成部分.掌握盒子模型的原理和使用方法可以极大地丰富HTML元素的表现效果,同时对于 ...

  8. 浅谈css中的position

    什么是position,根据css 2.1中的描述,position和float的值决定了浏览器要采用那种定位算法来计算元素盒子的具体位置.先避开float不谈,本文主要介绍position属性的不同 ...

  9. gulp最佳实践(包含js,css,html预编译,合并,压缩,浏览器自动刷新)

    gulp是基于流的自动化构建工具官方网址:http://www.gulpjs.com.cn/ 一.安装需要的模块 1.新建package.json,输入下面的内容 { "name" ...

随机推荐

  1. 武汉科技大学ACM:1001: 猴子选大王

    Problem Description n只猴子要选大王,选举方法如下:所有猴子按 1,2 ……… n 编号并按照顺序围成一圈,从第 k 个猴子起,由1开始报数,报到m时,该猴子就跳出圈外,下一只猴子 ...

  2. 学OpenGL的一些好的网站

    好的资源太多,自己懂的太少,而今迈步从头越!!fighting...... 一些OpenGL资源链接 这是前几天自己简单整理的几个链接,希望对大家有用 顺便问一下http://www.spacesim ...

  3. MySQL查询执行的基础

    当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的.一旦理解这一点,很多查询优化实际上就是遵循一些原则让优化器能够按照预想的合理的方式运行. 换句话说,是 ...

  4. 数据库触发器new old

    数据库触发器new old: "NEW . column_name"或者"OLD . column_name".这样在技术上处理(NEW | OLD . col ...

  5. Oracle database启动过程分析

    实例跟数据库的区别 实例(instance)是内存中的一块区域和一组后台进程的集合.它的作用是维护数据库文件的.而数据库(database)则是指存放数据的数据库文件.它是一系列格式化的数据的集合.它 ...

  6. Vxworks、QNX、Xenomai、Intime、Sylixos、Ucos等实时操作系统的性能特点

    Vxworks.QNX.Xenomai.Intime.Sylixos.Ucos等实时操作系统的性能特点 VxWorks操作系统 VxWorks 操作系统是美国WindRiver公司于1983年设计开发 ...

  7. STM32的RTC万年历显示问题

    博客整理后写出来的,有点乱,大家见谅! 想让串口输出万年历效果.每次秒刷新一次 结果是串口软件一直输出,看起来很难受 先讲一讲C代码的\r和\n的区别 \r 就是return 回到 本行 行首 这就会 ...

  8. git操作的各种命令整理

    1.常用的Git命令   命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git ann ...

  9. cf D. Broken Monitor

    http://codeforces.com/contest/370/problem/D 题意:输入一张图,上面只有两个字符'w'和‘.’ ,如果可以用一个正方形把所有的‘w’围起来,所有的‘w’都在正 ...

  10. Iterator pattern(c++实现)

    概述: 在现在的电视机中,我们使用[后一个]和[前一个]按钮可以很方便的换台,当按下[后一个]按钮时,将切换到下一个预置的频道.想象一下在陌生的城市中的旅店中看电视.当改变频道时,重要的不是几频道,而 ...