1 less 安装使用

安装

sudo npm install node-less

使用

mkdir less

cd /less

lessc demo1.less > test1.css

lessc -x demo1.less > test1.css (压缩)

2
为什么使用less

面向对象思想很重要的是继承和封装,我们也可以使用这种思想考虑css编写。

页面上的css从页面功能上来说,一般分为2类:结构性和装饰性的。

结构性:比如表格,列表,布局,定位。装饰性:比如字体,块内容,背景,边框,方框。

我们在根据设计图构建html结构时,考虑的css首先是结构性,比如布局,定位。我们一般会把整个页面分成几个部分,从设计角度来说就是模块。大模块的布局定位搞定之后,再到深入到模块里面。这个分层分块的思路其实就是封装的概念,每个模块看成一个黒盒子,先不管,把几个大的黑子拍整齐后,在深入大盒子里面。盒子里面也可以这么处理。

但是盒子和盒子之间可能有些相同部分,比如背景,比如字体,比如定位。如果把相同的部分拿出来,就有继承概念了。

使用模块化的方式构建html和css时,会使整个页面结构清晰,样式条理,方便后续的维护,但是有时候我们会遇到这样的情况:

(1) div1包含div2、div3,div2宽度固定,div3宽度=div1宽度-div2的宽度。设计样式时,我们针对每个div设计了样式,我们需要手动计算div3的宽度。如果设计有变更div2的宽度变了,或者div1的宽度变了,于是我们不得不重新计算div3的宽度,于是我们的工作量来了。

(2) 
div1包含div2、div3,div2、div3的结构性样式不同,但是有部分修饰性样式相同,比如字体和背景相同,于是们设计了一个类font-Bg加在div2和div3的class上,可以这样的话,你不得不面对这样一种风险,当div2和div3的字体和背景不同时,你要修改div2和div3的class,新增样式。为了减少这种修改,div2和div3各自设计一个class,但是他们之间确实有相同的样式,所以这个css的设计比较纠结,要么维护困难,要么费事费力。

遇到类似以上这些问题,我们有没有好的办法解决呢?

3
怎么使用less

less可以较好的解决上面遇到问题。

less主要的特性:变量及运算,混入(mixin),嵌套。

针对上述中第一个问题,我们使用变量就可以解决。

@div1Width:500;
@div2Width:200px; .div1cls
{
width:@div1Width;
} .div2cls
{
width:@div2Width;
} .div3cls
{
width:(@div1Width)-(@div2Width);
}

如果有div1和div2的width有变动,只需要修改@div1Width或@div2Width就可以了。

编译后:

.div1cls {
width:;
}
.div2cls {
width: 200px;
}
.div3cls {
width: 300px;
}

针对第二个问题,可以使用混入的方法:

.font-bg
{
font-size:12px;
background-image:url('demo.png');
} .div2cls
{
float:left;
.font-bg } .div3cls
{
float:right;
.font-bg }

如果有变动只需要修改css文件,编译就可以,而不需要修改html文件。这个继承的意思。公共样式都可以抽出来,需要的话,直接混入就可以。和extjs上apply类似。

编译后:

.font-bg {
font-size: 12px;
background-image: url('demo.png');
}
.div2cls {
float: left;
font-size: 12px;
background-image: url('demo.png');
}
.div3cls {
float: right;
font-size: 12px;
background-image: url('demo.png');
}

还有一种比较复杂的应用就是嵌套,考虑这样的场景:

div1包含div2、div3,div1背景图片是image1.png, div2背景变为白色,字体变成12px,div3背景为黄色,字体变成8px。当鼠标移动到div1上时,div1背景图片变成image2.png,div2背景变成红色,字体变成16px,div3背景变成绿色,字体变成8px。

我们会这样设计:

.div1{
background-image:url('image1.png');
}
.div1 .div2{
font-size:12px;
background-color:white;
}
.div1 .div3{
font-size:8px;
background-color:yellow;
} .div1hover{
background-image:url('image2.png');
}
.div1hover .div2{
font-size:16px;
background-color:red;
}
.div1hover .div3{
font-size:8px;
background-color:green; }

这样看着是不是有点乱,是的,略显得不简洁。我们用less的方法改造一下:

.div1
{
background-image:url('image1.png');
.div2{
font-size:12px;
background-color:white;
}
.div3{
font-size:8px;
background-color:yellow;
}
} .div1hover{
background-image:url('image2.png');
.div2{
font-size:16px;
background-color:red;
}
.div3{
font-size:8px;
background-color:green;
}
}

这样是不是感觉很简洁,嵌套关系很清晰?

less还有其他很多用法,可以帮助你编写更易维护,更清晰的css。大家去探索吧。

初识less的更多相关文章

  1. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  2. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  3. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  4. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

  5. UI篇(初识君面)

    我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 初识SpringMvc

    初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...

  8. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  9. Redis初识、设计思想与一些学习资源推荐

    一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...

  10. MongoDB【第一篇】MongodDB初识

    NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...

随机推荐

  1. MVC3.0 项目升级到 MVC4.0

    按照 http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806 的步骤 第一步:修改web.config 注意,默认的MVC3网站 ...

  2. Ant打包

    <?xml version="1.0" encoding="UTF-8"?> <!--打包的实质生成jar包的实质1.编译工程src文件夹下的 ...

  3. IOS OC数据类型

    1.只有浮点型数据除以0.0才能得到+-无穷大的数,而整形或char型数据会得到边界值 2.BOOL的实际类型是signed char,他的底层只占一个字节(只有八位),如果将一个较大的非零整数值赋给 ...

  4. Anroid 数据库的创建

    创建数据库首先要了解SQLiteOpenHelper类 1.构造方法 public SQLiteOpenHelper(Context context,String name, SQLiteDataba ...

  5. zigbee学习之路(十四):基于协议栈的无线数据传输

    一.前言 上次实验,我们介绍了zigbee原理的应用与使用,进行了基于zigbee的串口发送协议,但是上个实验并没有实现数据的收发.在这个实验中,我们要进行zigbee的接受和发送实验. 二.实验功能 ...

  6. mysql压缩包安装配置

    1.在环境变量中添加:MYSQL_HOME:C:\05_study\mysql-5.7.10-winx64,在path路径中加入:%MYSQL_HOME%\bin.配置环境变量不是必须的,只是为了能更 ...

  7. LINQ的基本认识

    前些日子,我的一个兄弟问我一个关于LINQ的问题,他问我AsEnumerable()在他写的一大段代码中的作用. 我不太清楚他是知道想考考我,还是不太清楚,想问题一下,反正我不太知道. 以前接触过一些 ...

  8. strom的使用01

    1.strom的安装和测试 1.1 搭建zookeeper集群 参考hadoop2.0初识1.3中的1.4配置zookeeper集群和自动故障转移 1.2 安装storm依赖的软件 sudo yum ...

  9. Oracle(控制用户权限)

    权限允许用户访问属于其它用户的对象或执行程序, ORACLE系统提供权限:Object 对象级.System 系统级 查看权限的数据字典: 字典名 含义 ROLE_SYS_PRIVS System p ...

  10. 查找二维数组list[][]中的最大的子数组的和

    之前做过最大一维数组子数组的和的题目,现在将数组扩展成二维: 代码如下: #include<iostream> #define null -858993460 using namespac ...