less的介绍和基本使用

less

  • less是一种动态样式语言,属于css预处理器的范畴,它扩展了css语言,增加了变量、Minix、函数等特性,使css更易维护和扩展
  • less可以在客户端上运行,也可以借助node.js在服务端运行

less 编译

  • 运行时编译
    可以在less官网下载less.js文件,并在less样式的下方引入,这样在运行时,less.js就会把less编译成浏览器可以识别的css了

    <style type="text/less">	// 类型需要指定为less
    // 开始写less的样式
    </style>
    <script src="less/less.js"></script>	// 在样式的后面引入less.js
    
  • 预编译
    还可以使用less的编译工具,例如koala,将写好的less文件直接编译成css供浏览器使用,

less中的注释

  • 以//开头的注释,不会被编译到css文件中
  • 以/**/包裹的注释会被编译到css文件中

less中的变量

  • 使用@来申明一个变量: @pink:pink;
  1. 作为普通属性值来使用: 直接使用@pink

    	@color: pink;	// 定义变量
    	* {
    		color: @color;	// 使用变量
    	}
    
  2. 作为选择器和属性名: @{selector}的形式

    	/*不常用的方式*/
    	@m:margin;	// 定义的变量为属性名时
    	* {
    		@{m}: 0;	// 使用的时候需要加大括号
    	}
    	@selector: #wrap;	// 定义的变量为选择器时
    	@{selector} {	// 使用的时候需要加大括号
    		...
    	}
    
  3. 作为URL: @{url}

  4. 变量的延迟加载

    @var: 0;
    .class {
    	@var: 1;
    	.brass {
    		@var: 2;
    		three: @var;	// three的值是3
    		@var: 3;
    	}
    	@one: var;			// one的值是1
    }
    // 在less中,每一个大括号都是一个块级作用域,每当解析完一个作用域时,才会确定变量最终的值
    

less中的嵌套规则

  • 基本的嵌套规则
	// 当less使用这种嵌套时
	#wrap {
		key1: value1;
		.inner {
			key2: value2;
		}
	}
	// 将会被解析成这种
	#wrap {
		key1: value1;
	}
	#wrap .inner {
		key2: value2;
	}
  • &的使用
	// 当less使用这种嵌套时
	#wrap {
		key1: value1;
		.inner {
			key2: value2;
			&:hover {	// 父级引用
				key3:value3;
			}
		}
	}
	// 将会被解析成这种
	#wrap {
		key1: value1;
	}
	#wrap .inner {
		key2: value2;
	}
	#wrap .inner:hover {
		key3: value3;
	}

less中的混合

  • 混合就是将一系列属性从一个规则集引入到另一个规则集的方式
  • 混合的定义在less规则中有明确的指定,使用.的形式定义
  • 当定义带参数的混合时,形参和实参的个数一定要相同
  • 普通混合
// 这样混合
.a {
	key1: value1;
}
.b {
	.a;
}
// 会被混合成这样
.a {
	key1: value1;
}
.b {
	key1: value1;
}


  • 不带输出的混合
// 这样混合
.a() {		// 如果给.a加上一对小括号
	key1: value1;
}
.b {
	.a;
}
// 将会被混合成这样
// .a()的样式将不会被编译到css中
.b {
	key1: value1;
}


  • 带参数的混合
// 这样混合
.a(@w, @h, @c)
{
	width: @w;
	height: @h;
	color: @c;
}

.b {
	.a(100px, 100px, pink);
}

// 会被编译成这样
.b
{
	width: 100px;
	height: 100px;
	color: pink;
}
  • 带默认值的混合
// 这样混合
.a(@w:10px, @h:10px, @c:deeppink)	// 传入默认值
{
	width: @w;
	height: @h;
	color: @c;
}

.b {
	.a();	// 可以不带实参
}

// 会被编译成这样
.b
{
	width: 10px;
	height: 10px;
	color: deeppink;
}
  • 使用命名参数的混合
// 这样混合
.a(@w:10px, @h:10px, @c:deeppink)	// 传入默认值
{
	width: @w;
	height: @h;
	color: @c;
}

.b {
	.a(@c:black);	// 通过命名参数传递指定的实参
}

// 会被编译成这样
.b
{
	width: 10px;
	height: 10px;
	color: black;
}
  • 匹配模式
// 这样混合
.a(A){	// 小括号里面的标识符没加@,是用作匹配的
	key1: value1;
}
.a(B){
	key2: value2;
}
.a(C){
	key3: value3;
}
.a(D){
	key4: value4;
}
.b {
	.a(B);	// 匹配指定的模式
}

// 将编译成这样
.b{
	key2: value2;
}

================================================================================================================================================================================
.a(@_){	//当小括号里的参数是@_时,将匹配任意模式
	key0: value0;
}
.a(A){
	key1: value1;
}
.a(B){
	key2: value2;
}
.a(C){
	key3: value3;
}
.a(D){
	key4: value4;
}
.b {
	.a(B);	// 匹配指定的标识符
}

// 将编译成这样
.b{
	key0: value0;	//	.a(@_)也被匹配到了
	key2: value2;
}

  • 混合的arguments变量
.a(@px, @style, @color){
	border: @arguments;	// 相当于border: @px @style @color;
}
.b{
	.a(1px, solid, red);
}

// 将被编译成
.b{
	border: 1px solid red;
}

less计算

.a{
	width: (100+100px);	// 只需要一方带单位就可以了,支持加减乘除
}
// 将被编译成
.a{
	width: 200px;
}

less继承

.a{	// 用作继承的样式不能写成混合
	key1: value1;
}
.b:extend(.a){
	key2: value2;
}
// 将被编译成
.a,
.b{
	key1:value1;
}
.b{
	key2: value2;
}

less避免编译

.a{
	width: 100px + 100;
	height: ~"calc(100px + 100)";
}

// 将被编译成
.a{
	width: 200px;
	height: calc(100px + 100);
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tanleiDD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值