Less基础教程

Less基础教程

less是较早出现的css预处理器。 LESS API 参考

安装和使用

安装比较简单,通过nmp或bower安装即可.

npm install less -g
bower install less

新版的chrome能直接解析less样式,不进行预编译的情况下,可以在页面引入 自己写的less文件 和 less.js
less会在页面创建<style>节点,包含编译后的样式

<link rel="stylesheet/less" href="style.less" type="text/css" />
<script src="less.js" type="text/javascript"></script>

Less的语法

变量

/*变量*/
/*注意,由于变量只能定义一次,实际上他们就是“常量”.*/
@base: #f938ab;

函数

/*函数 .box-shadow(), iscolor(), isnumber(), 函数重载*/
.box-shadow(@style, @c) when(iscolor(@c)){
	-webkit-box-shadow:@style @c;
	box-shadow:@style @c;
}

.box-shadow(@style, @alpha:50%) when(isnumber(@alpha)){
	.box-shadow(@style, rgba(0,0,0, @alpha));
}

/*使用变量,调用函数*/
.box{
	color:saturate(@base, 5%);
	border-color:lighten(@base, 30%);
	div{
		.box-shadow(0 0 5px, 30%)
	}
}

变量和运算符

/*定义变量,使用运算符*/
@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;


/*使用变量*/
#header{
	color: @light-blue;
	.nav{
		font-size:20px;
	}
	.logo{
		width:200px;
		height:100px;
		float:left;
		background:#aaa;
	}
}


.bordered{
	border-top:dotted 1px green;
	border-bottom:dashed 2px blue;
}
.txt-none{
	text-decoration:none;
}

混合 mixin

/*~~嵌入 其他样式*/
/*混合*/
/*混合就是一种将一系列属性从一个规则集引入(“混合”)到另一个规则集。*/
#menu a{
	color:#111;
	.bordered;
	.txt-none
}

.post a{
	color:red;
	.bordered;
	.txt-none;
}

嵌套 nest

/*~~包含 内部样式定义*/
/*嵌套 样式规则 这样的代码更简洁, 它模仿了 HTML 的结构. & 表示当前选择器的父选择器*/

.clearfix{
	display:block;
	zoom:1;
	&:after{
		content:'';
		display:block;
		clear:both;
		visibility:hidden;
		font-size:0;
		line-height:0;
		height:0;
	}
}

/*上面等价于*/

.clearfix{
	display:block;
	zoom:1;
}
.clearfix:after{
	content:'';
	display:block;
	clear:both;
	visibility:hidden;
	font-size:0;
	line-height:0;
	height:0;
}

#header {
	color: black;
	.logo {
		width: 300px;
	}
}

/*等价于*/
#header {
	color: black;
}
#header .logo {
	width: 300px;
}

包含媒体查询的嵌套

/*~~包含 媒体查询*/
/*嵌套 媒体查询*/
.screencolor{
	@media screen{
		color: green;
		@media (min-width:768px){
			color:red;
		}
	}

	@media tv{
		color:black;
	}
}

运算

/*定义变量 变量运算和赋值*/
@baseAlpha: 30%;
@filler: @baseAlpha * 2;
@other: @baseAlpha + @filler;
@var: 5px + 10;

/*变量直接作为属性值,或运算后作为属性值*/
.test{
	padding-top: @var;
	color:#888 / 4;
	background-color: @base + #111;
	height: 100% /2 + @filler
}

bundle(只minxin bundle的一部分)

/*包含 内部元素样式定义*/
#bundle{
	.button{
		display:block;
		border:1px solid hotpink;
		background:grey;
		&:hover{
			background-color:#fff;
		}
	}
}

/*嵌入 包含定义的样式*/
#header a{
	color: skyblue;
	#bundle > .button;
}

变量的作用域

/*变量作为样式属性值,注意变量的作用域 {}*/
/*变量可以在最外层声明,也可以在样式定义{}中声明*/
@varcolor: red;
#footer{
	color: @varcolor;
	@varcolor: green;
}

变量插值(插值到选择器或样式属性)

/*变量作为插值表达式 使用在选择器中,注意格式@{varname}*/
@myselector: banner;
.@{myselector}hihi{
	font-weight:bold;
	line-height:40px;
}

变量作为
@img: "../images";
.test-img{
	color:#444;
	background-image:url("@{img}/white-brand.jpg");
}

动态变量(变量的值作为另一个变量的名)

.test-var{
	@found: "i am found";
	@varfnd: "found";
	content:@@varfnd;

}

变量顺序解析 同名覆盖

.test-lazy{
	width: @var2;
	@a2: 9%;
	height:@a2;
}

@var2: @a2;
@a2: 100%;

.test-lazy2{
	width: @var2;
	height:@a2;
}

@var3 : 0;
.class{
	@var3:1;
	.blass{
		@var3:2;
		three: @var3;
		@var3:3;
	}
	one: @var3;
}

@import "other";
@base-color: green;
.test-import{
	font-size:20px;
	background: @base-color;
	color:@dark-color;
}

继承 extend

nav ul{
	&:extend(.inline);
	background:blue;
}

.inline{
	color:red;
}

.a:extend(.inline){
	font-size:18px;
}

.bucket{
	tr & {
		color:blue;
	}
}

.some-class:extend(tr .bucket){
	border:1px dotted green;
}
posted @ 2016-06-21 10:35  stephenykk  阅读(815)  评论(0编辑  收藏  举报