less入门--常用

以下顺序不分重要主次,随意写的

1、编译工具

  1. Koala http://koala-app.com/index-zh.html
  2. node.js
  3. 浏览器使用

2、变量

  • 定义: @变量名:值
@w:30px;
@c:red;
@xx:solid;
  • 变量要在使用前定义,注意位置
// 变量定义
@w:30px;
@c:red;
// 变量的使用
border_arg(@w, @c, @xx){
     border:@arguments;
     // 等同于
     border: @w @c @xx;
}
@xx:solid;
// 以上代码会报错 xx未定义,因为它在调用之后定义的,获取不到

3、混合

  • .box也拥有了border的样式,也就是混合
.border{
	border:1px solid #000;
}
.box{
	.border; 
}

默认值

  • 传参、及默认值概念(和es6函数参数的默认值一样)
  • 若无默认值则调用时必须传值,否则会报错
.border(@w){
    border:@w solid #000;
}
.border(2px); // 正确使用
.border(); //会报错

传参

  • 不传参则使用默认值2px
  • 传参使用传的参数
.border(@w:2px){
	border:@w solid #000;
}
// 使用
.border();   --不传参
.border(10px);  --传参
  • @arguments变量,表示所传入的所有参数
border_arg(@w, @c, @xx){
     border:@arguments;
     // 等同于
     border: @w @c @xx;
}

4、匹配模式

// 定义
.pos(r){position:relative}
.pos(a){position:absolute}
.pos(f){position:fixed}
// 使用
.pipei{
	height:200px;
	width:200px;
	.pos(f);
}

5、循环

有个重点:.bgImageXXX是生成的类名,但是less中需要先定义 .bgImage样式,要不然出不来,具体原因还不太清楚

// 定义数组
@bgImageList:0,1,2,3;
// 定义循环
.bg-loop(@list,@i:1,@val:extract(@list,@i)) when (@i < length(@list)+1){
    .bgImage@{val}{
        width:100%;
        height:100%;
        display: inline-block;
        background: url("../image/@{val}.png") no-repeat center center;
        background-size: contain;
    }
    .bg-loop(@list,(@i+1));
}
.bg-loop(@bgImageList);
// 生成  .bgImage0,.bgImage1,.bgImage2,.bgImage3
// .bgImage必须定义
.bgImage{
    width:100%;
    height:80%;
    display: inline-block;
    background-size: contain;
}

类名的调用(react为例)
以拼接形式增加类型 bgImagexxx

import styles from 'xxx.less';
...
render(){
const list=[0,1,2,3];// 与less中数组定义内容一样
	return(
		{list.map((item)=>{
			return(
				<div className={styles.bgImage + item}></div>
			)
		})}
	)
}

6、单位换算定义,使用

单位换算定义

.vh(@name, @px){
   @{name}:(@px/(1080/100)) *1vh;
}

.vw(@name,@px){
   @{name}:(@px/(1920/100)) *1vw;
}

使用

body{
   .vw(width,540);
   .vh(height,46);
   .vh(line-height,46);
}

/*实际生成*/
body{
   width:540px;
   height:46px;
   line-height:46px;
}

7、注释

注释有两种
/**/ 编译时会保留注释
// 编译时会自动过滤(建议使用)

8、运算

+、-、*
只要变量带单位即可,运算时不用加单位

@test:300px;
.box{
	width:@test + 20;
}
// 生成 width:320px

也可以用于颜色值(不建议使用,因为颜色值没那么准确)

color:#ccc - 10;
// 表示比#ccc深一些,自动转换为255-10

9、嵌套规则

嵌套建议选择后代选择器,层级多找得多,比如 li>a 可以都写同级

// css
.list{}
.list li{}
.list a{}
// less嵌套写法
.list{
	.li{}
	a{}
}

&代表他的上一层选择器
如果类名为 title中的 .title_nav 也可以写成 &_nav

a{
	float:left;
	&:hover{
		color:red;
	}
}

10、避免编译

less不认识的专有语法,要在字符串中加 ~ ,表示不编译,原封放入css中

width:calc(100%-35);
需要写成  width:~ 'calc(100%-35)';

11、可引入其他less文件或css

@import ‘less文件名’; less文件可以不写后缀
@import (less) ‘a.css’; 写在哪里,导入的样式酒会编译在哪里

发布了18 篇原创文章 · 获赞 0 · 访问量 368

猜你喜欢

转载自blog.csdn.net/sinat_41904410/article/details/101171247
今日推荐