初识less
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的更多相关文章
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- 初识IOS,Label控件的应用。
初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...
- UI篇(初识君面)
我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- 初识SpringMvc
初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
- Redis初识、设计思想与一些学习资源推荐
一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...
- MongoDB【第一篇】MongodDB初识
NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...
随机推荐
- Custom work flow
http://runjs.cn/detail/99epj1t2 http://www.cqroad.cn/ https://jsplumbtoolkit.com/demo/flowchart/dom. ...
- iTunes
我们的电脑都要下载比较好的显卡那项 https://support.apple.com/zh_CN/downloads/itunes
- iOS开发随笔
突然看到一个搞11年IT的前辈 他的简历给人焕然一新的感觉 IOS:深入理解object-c语言 内存管理(ARC,MRC, 写回传),GCD,RunLoop,RunTime,,Block,Deleg ...
- iOS高性能设置圆角
自建一个分类可以设置. -(void)cornerImageWithSize:(CGSize)size fillColor:(UIColor *)fillColor completion:(void( ...
- Swift 语法
三目运算 let p=10 let x:Int? = 12 let m:Optional = 11 print(x!+p+m!) ...
- 三层架构 与 MVC那点事儿
以下为转载内容: 地址 MVC与三层架构的异同点 首先先解释一下MVC. V即View.是视图的意思. C即Controler.是控制器的意思. M即Model,是模型的意思. 这三个里.最不容易理解 ...
- word域2
一.域应用基础 1.什么是域 简单地讲,域就是引导Word在文档中自动插入文字.图形.页码或其他信息的一组代码.每个域都有一个唯一的名字,它具有的功能与Excel中的函数非常相似.下面以Seq和Dat ...
- IE11 HTML Help ActiveX
<!--by: @qab--> <OBJECT id=HHCTRL type="application/x-oleobject" classid="cl ...
- js 定义方法的集中方式
1:调用关键字function来构造 如: function distance(x1,x2,y1,y2) { var dx = x2 - x1; var dy = y2 ...
- 安装centos时候自动安装vm tool,导致无法继续安装centos的解决办法
我原先安装centos 的时候装的是CD版的,也是到这一步就卡住了,然后我在"虚拟机->取消安装vmare tool" 点击“取消安装vmare tool”,然后他就可以进行 ...