对于一些布局和样式比较复杂的网页,如何构建一个健康、优雅的CSS文件是一个很令人苦恼的问题。在书写静态页面的时候,我总是遇到布局结构累赘和重复样式复用性不高的问题,当然,对于这些问题归根究底还是要多联系和思考,和使用LESS带来好处并没有什么关系,但是使用LESS书写CSS样式能够清楚的看到样式的布置结构,方面观察各个元素之间的联系。

  由于CSS是一门领域专用语言,并且是一门非程序式语言,这就造成了CSS代码书写很容易,但是想要写好、方便维护和管理就需要较强的能力了。除开注释有着不可忽视的作用,一个CSS管理工具也可以带来很大的便利。LESS在最大的好处是在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS 的编写,并且降低了 CSS 的维护成本,就像它的名称所说的那样,LESS 可以让我们用更少的代码做更多的事情。

  LESS满足CSS的所有语法,并且在其之上,有着一套自定义语法,用户可以通过自定义语法定义自己的样式规则,并且通过解析器编译成对应的CSS文件。LESS语法包括以下几部分:

  1、注释

  在LESS中,注释有两种书写方式,和JS相似

//这是单行注释,只会在LESS中显示,不会被编译在CSS中

/*
* 这是多行注释,会被编译成CSS的一部分
*/

  2、变量

  LESS通过@来定义和引入变量,同时变量也存在作用域,在引用时会依照作用域链寻找定义变量的样式使用

@width: 20 px;
.homeDiv {
@width: 30 px;
.centerDiv {
width: @width; // 此处应该取最近定义的变量 width 的值 30px
}
}
.leftDiv {
width : @width; // 此处应该取最上面定义的变量 width 的值 20px
}

  3、混入

  混入就是相当于将一个类选择器当做变量来引用,实现样式的多重继承。混入有很多种使用方式,这里只列举简单的两种

.bgc{
background-color: black; //声明一个样式
}
.box{
width:100px;
height: 100px;
.bgc; //将样式加入到元素中
}

  这是最简单的引用方式,引用类选择器的时候还能附加上变量

.boxwidth(@width){   //可以使用@width: 100px 设定默认值,那么使用的时候不传递参数也可以
width: @width;
}
.box{
height: 100px;
.boxwidth(100px);
}

  4、嵌套

  嵌套是针对html结构进行对应的样式设置的方式,并且能够使我们书写代码更加简单快捷

<div class="page">
<div class="wrapper">
<div class="content">
<p>hello</p>
<p>don't say hello</p>
</div>
</div>
</div>

  样式是这样书写的:

.page{
@width: 500px;
height: 500px;
border: 1px solid blue;
overflow: hidden;
.wrapper{
width: @width;
height: 200px;
margin: 20px auto;
background: green;
.contetn{
width: 200px;
float: right;
p{
font-size: 24px;
}
p:last-of-type{
font-style: initial;
}
}
}
}

  经过Koala编译之后:

.page {
height: 500px;
border: 1px solid blue;
overflow: hidden;
}
.page .wrapper {
width: 500px;
height: 200px;
margin: 20px auto;
background: green;
}
.page .wrapper .contetn {
width: 200px;
float: right;
}
.page .wrapper .contetn p {
font-size: 24px;
}
.page .wrapper .contetn p:last-of-type {
font-style: initial;
}

  5、函数和运算

  LESS支持运算,某些时候能够帮助我们自动完成布局

@width: 250px;
@color: #255;
.switchColor {
width: @width * 2;
background: @color - 100;
}

  支持加减乘除四则运算。

LESS的简单介绍的更多相关文章

  1. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  2. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  3. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

  4. yii2的权限管理系统RBAC简单介绍

    这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...

  5. angular1.x的简单介绍(二)

    首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...

  6. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  7. iOS-iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

  8. iOS开发多线程篇—多线程简单介绍

    iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...

  9. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

  10. Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍

    一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...

随机推荐

  1. Cannot start service MSSQL$MICROSOFT##WID on computer

    在做ADFS部署过程中配置ADFS服务时遇到如下问题 检查系统日志错误日志如下,很明显"NT SERVICE\MSSQL$MICROSOFT##WID"这个账户不在log on a ...

  2. GDB 资料汇总

    很全的关于 GDB 调试的指导: GDB中应该知道的几个调试方法 用 GDB 调试程序 100个gdb调试小技巧 CGDB中文手册 Beej's Quick Guide to GDB

  3. Locally Weighted Linear Regression 局部加权线性回归-R实现

      局部加权线性回归  [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 线性回归容易出现过拟合或欠拟合的问 ...

  4. STL算法设计理念 - 二元函数,二元谓词以及在set中的应用

    demo 二元函数对象 #include <iostream> #include <cstdio> #include <vector> #include <a ...

  5. Mongodb系列之--mongodb的启动与关闭

    Mongodb的开启   默认启动:   $ ./mongodb   默认数据保存路径:/data/db/ 默认端口:27017   修改默认路径:   --dbpath $ ./mongdb --d ...

  6. ANDROID框架结构和介绍

    下图是ANDROID4.4 版本包含的所有系统服务.本地服务和应用的框架图,组织为三层:应用层.系统服务层.本地进程和服务层.应用层通常通过服务提供的对外API接口(一个服务管理对象)与服务交互,系统 ...

  7. 【OpenCV学习】Kmean均值聚类对图片进行减色处理

            #include <cv.h> #include <highgui.h> #include <iostream> #define MAX_CLUST ...

  8. Linux网络设置(第二版) --互联网寻址过程

    Linux网络设置 --互联网寻址过程 1.TCP/IP与OSI参考模型比较 TCP/IP OSI 物理层 网卡 数据链路层 * MAC地址 网络层 IP,ICMP,ARP协议 传输层 TCP,UDP ...

  9. Linux其他常见压缩备份工具 - dd,cpio

    dd dd 可以读取磁碟装置的内容(几乎是直接读取磁区"sector"),然后将整个装置备份成一个文件呢!真的是相当的好用啊- dd 的用途有很多啦-但是我们仅讲一些比较重要的选项 ...

  10. 基于阻塞队列的生产者消费者C#并发设计

    这是从上文的<<图文并茂的生产者消费者应用实例demo>>整理总结出来的,具体就不说了,直接给出代码,注释我已经加了,原来的code请看<<.Net中的并行编程-7 ...