对于一些布局和样式比较复杂的网页,如何构建一个健康、优雅的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. 【一天一道LeetCode】#46. Permutations

    一天一道LeetCode系列 (一)题目 Given a collection of distinct numbers, return all possible permutations. For e ...

  2. JSP 对象的作用范围

    在JSP中,对象有四种范围:page.request.session和application page范围             所谓的page范围指单一的JSP页面范围,page范围内的对象只能在 ...

  3. Xcode 下cocos-2dx 环境搭建

    一.Cocos2d-x简介 Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的,这是一个C++ Cocos2d-iPhone项目的版本. Cocos2d-X发展的重点是围绕Cocos ...

  4. jquery sortable的拖动方法内容说明和示例详解(转载http://www.jb51.net/article/45803.htm)

     所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象 ui.helper - 表示sortable元素的JQuery对象,通常是当前元素的克隆对象 u ...

  5. centos6.5 rsync+inotify实现服务器之间文件实时同步

    1. rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据 ...

  6. 某集团BI决策系统建设方案分享

    企业核心竞争能力的提升,需要强壮的运营管理能力,需要及时.准确.全面的业务数据分析作为参考与支撑. 某集团是大型时尚集团,内部报表系统用的QlikView,但是管理分配不够灵活,不能满足数据安全的要求 ...

  7. Struts的取值与标签

    首先,我们都知道,在struts2中有一个valuestack.里面存放的就是action里的属性.同时,还有一个stackcontext,里面放的是map形式的request/session/att ...

  8. LeetCode之“链表”:Reverse Nodes in k-Group

    题目链接 题目要求: Given a linked list, reverse the nodes of a linked list k at a time and return its modifi ...

  9. 在app内打开自己app的专用设置界面

    在我们的APP中,可能会使用多种服务,例如定位.推送.相册.拍照.通讯录等.选择是否允许一般只出现在安装app后第一次打开时,可是我们依然需要在使用到某种服务的时候判断是否用户是否允许了该服务,因为用 ...

  10. obj-c编程14:Cocoa和Cocoa Touch简介

    这一篇篇幅相对少很多,几乎没有代码,全部都要靠本猫的语言组织能力啊!Cocoa框架在前面讲解F库时曾简单做过介绍,现在再具体说一说喽.各位童鞋是否已经发现鸟,前面所写的所有代码都是基于终端(或称之为c ...