less简介
Less是一种动态的样式语言。Less扩展了CSS的动态行为,比如说,设置变量(Variables)、混合书写模式(mixins)、操作(operations)和功能(functions)等等,最棒的是,Less使用了现有的CSS语法,也就是说,你可以直接把你现成的样式文件“style.css”直接改成“style.less”,他也能正常工作。
编译less
1.使用js
<link rel="stylesheet/less" type="text/css" href="css/style.less" >
<script type="text/javascript" src="js/less-1.3.3.min.js" data-env="development" ></script >//网上可下载
2.Koala编译工具
koala是一个前端预处理器语言图形编译工具,支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行
官网地址http://koala-app.com/index-zh.html
3.使用第三方工具gulp grunt等
less语法
变量
//less
@color:#333;
header{
color:@color;
}
/*css*/
header{
color:#333333;
}
混合--在 LESS 中我们可以定义一些通用的属性集为一个class,然后在另一个class中去调用这些属性
//less
.bd50{
border-radius: 50%;
}
.yuan{
width:100px;
height:100px;
background:red;
.bd50
}
/*css*/
.yuan{
width:100px;
height:100px;
background:red;
border-radius: 50%;
}
//html代码
<div class="yuan"></div>
效果

带参数混合--像函数一样定义一个带参数的属性集合,然后在另一个class中去调用这些属性。
//less
/*classA:设置圆角角度为50px*/
.radius(@radius: 50px) {
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
/*classB:设置阴影颜色大小*/
.boxShadow(@boxShadowColor:0 0 10px rgba(0, 204, 204, .5)){
-webkit-box-shadow:@boxShadowColor;
-moz-box-shadow:@boxShadowColor;
box-shadow:@boxShadowColor;
}
/*classC:调用A、B*/
.tableBorder{
border : 5px solid 5px solid #ffff00;
background: #ffc0cb;
width: 200px;
height: 200px;
padding: 0;
margin:0;
text-align: center;
line-height: 200px;
.boxShadow;
/*在classC中调用classA、B 带值带括号 括号内给值,执行括号内的数据*/
.radius();
}
/*css*/
.tableBorder {
border: 5px solid #ffff00;
background: #ffc0cb;
width: 200px;
height: 200px;
padding: 0px;
margin: 0px;
text-align: center;
line-height: 200px;
-webkit-box-shadow: 0 0 10px rgba(0, 204, 204, 0.5);
-moz-box-shadow: 0 0 10px rgba(0, 204, 204, 0.5);
box-shadow: 0 0 10px rgba(0, 204, 204, 0.5);
border-radius: 50px;
-webkit-border-radius: 50px;
-moz-border-radius: 50px;
}
//html代码
<div class="tableBorder">我是一个带参数混合的正方形</div>
效果
@arguments变量--@arguments包含了所有传递进来的参数. 如果你不想单独处理每一个参数的话就可以像这样写:
//less
.arguments{
width: @width200;
height: @width200;
margin: 30px;
.box-Shadow();
}
.box-Shadow(@x:0,@y:0,@blur:1px,@color: rgba(215, 22, 185, .5)){
//包含传进来的所有参数
box-shadow: @arguments;
-moz-box-shadow: @arguments;
-webkit-box-shadow: @arguments;
}
/*css*/
.arguments {
width: 200px;
height: 200px;
margin: 30px;
box-shadow: 0 0 1px rgba(215, 22, 185, 0.5);
-moz-box-shadow: 0 0 1px rgba(215, 22, 185, 0.5);
-webkit-box-shadow: 0 0 1px rgba(215, 22, 185, 0.5);
}
//html代码
<div class="arguments">arguments变量</div>

嵌套--可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。
//less
.list{
width: 100%;
padding: 0;
margin: 30px auto;
list-style: none;
li{
height: 30px;
line-height: 30px;
margin-bottom: 5px;
background: pink;
padding: 0 10px;
//这样写也可以 但是要进行更深层次的匹配 影响效率
/*a{
color: #666;
text-decoration: none;
padding-left: 20px;
}*/
}
a{
color: #666;
text-decoration: none;
//&:代表他的上一层选择器
&:hover{
color: #3a87ad;;
text-decoration: underline;
}
}
span{
float: right;
}
}
/*css*/
.list {
width: 100%;
padding: 0;
margin: 30px auto;
list-style: none;
}
.list li {
height: 30px;
line-height: 30px;
margin-bottom: 5px;
background: pink;
padding: 0 10px;
}
.list a {
color: #5bc0de;
text-decoration: none;
}
.list a:hover {
color: #3a87ad;;
text-decoration: underline;
}
.list span {
float: right;
}
//html代码
<div class="qiantao">
<ul class="list">
<li><a href="#">这是一个测试嵌套的代码</a><span>2012-04-02</span></li>
<li><a href="#">这是二个测试嵌套的代码</a><span>2012-04-02</span></li>
<li><a href="#">这是三个测试嵌套的代码</a><span>2012-04-02</span></li>
</ul>
</div>

匹配模式--有些情况下,我们想根据传入的参数来改变混合的默认呈现,比如下面这个例子:
//less
//朝上
//宽度默认5,颜色默认灰色
.triangle(top,@w:100px,@c:#ccc){
border-width: @w;
border-color: transparent transparent @c transparent;
border-style: dashed dashed solid dashed;
}
//朝下
.triangle(bottom,@w:100px,@c:#ccc){
border-width: @w;
border-color:@c transparent transparent transparent;
border-style:solid dashed dashed dashed;
}
//朝左
.triangle(left,@w:100px,@c:#ccc){
border-width: @w;
border-color: transparent @c transparent transparent ;
border-style: dashed solid dashed dashed ;
}
//朝右
.triangle(right,@w:100px,@c:#ccc){
border-width: @w;
border-color: transparent transparent transparent @c ;
border-style: dashed dashed dashed solid;
}
//特殊匹配模式 不管匹配谁都会执行@_的内容
.triangle(@_,@w:100px,@c:#ccc){
width: 0px;
height: 0px;
overflow: hidden;
}
.sanjiao{
.triangle(left);
}
/*css*/
//由于调用的“left”,所以只会编译left的样式
.sanjiao {
border-width: 100px;
border-color: transparent #cccccc transparent transparent;
border-style: dashed solid dashed dashed ;
width: 0px;
height: 0px;
overflow: hidden;
}
//html代码
<div class="sanjiao"></div>

less简介的更多相关文章
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- Cesium简介以及离线部署运行
Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...
- 1.Hibernate简介
1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发; b.大大减少代码量; c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...
随机推荐
- @synchronized(self)的用法 小结
@synchronized() 的作用是创建一个互斥锁,保证在同一时间内没有其它线程对self对象进行修改,起到线程的保护作用, 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用 ...
- wubi安装ubuntukylin-14.04
自ubuntukylin-14.04发布以来一直想体验一下,正好五一休假有了时间,在经历了一番坎坷后终于安装成功.安装环境为Win7家庭高级版,至于采用wubi方式安装,只因Linux水平差和图省事, ...
- 如何在Oracle中复制表结构和表数据
1. 复制表结构及其数据: create table table_name_new as select * from table_name_old 2. 只复制表结构: create table ta ...
- javascript运算符语法概述
× 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...
- angular学习笔记(二十九)-$q服务
angular中的$q是用来处理异步的(主要当然是http交互啦~). $q采用的是promise式的异步编程.什么是promise异步编程呢? 异步编程最重要的核心就是回调,因为有回调函数,所以才构 ...
- 银行卡BIN: Bank Identification Number
What is a 'Bank Identification Number - BIN'A bank identification number (BIN) is the initial four t ...
- mac下打开FTP服务
MAC下打开FTP服务 周银辉 mac下一般用smb服务来进行远程文件访问,但要用FTP的话,高版本的mac os默认关掉了,可以用如下命令打开: sudo -s launchctl load -w ...
- 基于webmagic的爬虫项目经验小结
大概在1个月前,利用webmagic做了一个爬虫项目,下面是该项目的一些个人心得,贴在这里备份: 一.为什么选择webmagic? 说实话,开源的爬虫框架已经很多了,有各种语言(比如:python.j ...
- 初学C#和MVC的一些心得,弯路,总结,还有教训(2)--关于Entity Framework
看了一堆视频教程后,感觉基本了解的差不多了,可以动手.....因为最好的学习方法就是实践嘛.... 所以打算从网站做起,在WebForm和MVC之间选了MVC,因为感觉高大上...也比较灵活 于是买了 ...
- caffe的python接口学习(4):mnist实例---手写数字识别
深度学习的第一个实例一般都是mnist,只要这个例子完全弄懂了,其它的就是举一反三的事了.由于篇幅原因,本文不具体介绍配置文件里面每个参数的具体函义,如果想弄明白的,请参看我以前的博文: 数据层及参数 ...