众所周知,less是一门css预处理语言,其他的类似还有scss、Stylus 等,和js相似度比较高的就是less了。话不多说,我们来看less的使用。

Node.js 环境中使用 Less :

npm install -g less

> lessc styles.less styles.css

我用的vscode,编译后css文件在vscode项目文件里显示不出来,但是在本地路径下查看得到。

在浏览器环境中使用 Less :

<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/3.8.1/less.min.js" ></script>

1.变量的使用

Less中,变量由变量名称和值组成。变量名以 @ 为前缀,由字母、数字、_和-组成,变量名称和值之间用冒号隔开

@width:80%;
@height:100px;
@color:blue; .box{
width:@width;
height:@height;
background-color: @color;
margin-top: 5px;
}
.box1{
width:@width+10px;
height:@height;
background-color: @color;
margin-top: 10px;
}
.box2{
width:@width+20px;
height:@height;
background-color: @color;
margin-top: 5px;
}

less变量也分全局变量和局部变量,不仅可以直接在属性值中使用变量,还可以用类似 @{name} 的结构,以“插值”的方式在选择器名、属性名、URL、import、媒体查询中使用变量。在编译时,变量将被替换为它们相应的值。

2.混合(是一种将一组属性从一个规则集包含到另一个规则集的方法)

.box1{
width:@width+20px;
height:@height;
background-color: @color;
margin-top: 5px;
.bordered();
}
.bordered{
border-top:dotted 1px #ff0000;
border-bottom:solid 2px #;
}

恩,就是定义一个类似函数的东西,然后引用它就行

3.嵌套

@width:%;
@height:100px;
@color:pink; .box{
width:@width;
height:@height;
background-color: @color;
margin-top: 5px;
p{
color:red;
font-size: 12px;
}
.username{
color:#eeeeee;
font-size: 16px
}
}

等效于

.box{width:@width;height:@height;background-color:@color;margin-top: 5px; }
.box p{color:red;font-size: 12px;}
.box .username{color:red;font-size: 12px;}

这波操作也是很骚了,是不是想到了js函数嵌套啊~

4.运算

官网翻译哈:算术运算+、-、*、/可以对任何数字、颜色或变量进行运算。如果可能的话,数学运算在加、减或比较之前会考虑到单位并转换数字。结果具有最左边的显式单位类型。如果转换不可能或没有意义,则忽略单位。不可能的转换示例:px到cm或rad到%。

@count-:5cm+10mm;
@count-:5cm+10mm-2mm;
@count-:5cm+10px;
@count-:5cm-10px;
@count-:5cm-10mm+50px;
@base:%;
@filter:@base*;
@color:#;
.d1{
width:@count-;
background-color: @color+#;
}
.d2{
width:@count-;
background-color: @color+#;
}
.d3{
width:@count-;
background-color: @color+#;
}
.d4{
width:@count-;
background-color: @color+#;
}
.d5{
width:@count-;
background-color:@color+#fff;
}

效果图

5.Escaping

转义允许您使用任意字符串作为属性或变量值。在~“anything”或~“anything”中的任何内容都将按原样使用,除了插值之外没有任何更改。

@min768: ~"(min-width: 768px)";
.element {
@media @min768 {
font-size: .2rem;
}
} 等效于 @media (min-width: 768px) {
.element {
font-size: .2rem;
}
}

感觉是给了你自由,反而让人有点不习惯来了呢~

6.函数

这是我们最经常用到的东西,但是用法也很多,具体的还是参见函数手册

@width:0.5;
@base:#c0b40c;
.class{
width:percentage(@width);
color:saturate(@base,%);
background-color: spin(lighten(@base, %), );
}

丑图

7.命名空间和访问器

#bundle() {
.button {
display: block;
border: 1px solid black;
background-color: grey;
}
.font{...}
.tab{...}
} #header a {
color: orange;
#bundle.button(); // 也可以写成#bundle > .button
}

这也是为了方便函数复用了,命名空间选择器了解一下。

命名空间不加()也行。

.box{
width:@width;
height:@height;
background-color: @color;
.username{
color:#eeeeee;
font-size: 16px;
}
}
.box1{
.box.username;
width:@width;
height:@height;
background-color: @color; }

8.Map

从3.5以下的版本开始,可以使用mixin和ruleset作为值的映射

#library() {
.colors() {
primary: green;
secondary: blue;
}
} #library() {
.colors() { primary: grey; }
} .button {
color: #library.colors[primary];
border-color: #library.colors[secondary];
} //等效于
//.button { color: grey; border-color: blue; }  

再次感叹万能的对象!

这些还只是初步的less语法知识,下次我们再来深入了解吧!推荐大家去less官网学习,官网上够详细啦

 

随机推荐

  1. GC垃圾回收

    我们在开发需求的时候,可能很少关注到垃圾回收,因为我们绝大多数的时候都是使用的托管资源,托管资源的内存回收.net已经帮我们做了,但是.net的内存回收不是实时的,所以我们还是要关注下.net的垃圾回 ...

  2. REST风格下如何放行静态资源

    在配置DispatcherServlet(前端控制器)时,如果把拦截路径配置成rest风格(即斜杠/),则会将静态资源也一并拦截(比如.css .js ,jpg)为了避免这个情况,可以把拦截路径设置成 ...

  3. 自然底数e的意义是什么?

    自然底数e的意义是什么? https://mp.weixin.qq.com/s?__biz=MzA5ODUxOTA5Mg==&mid=2652553811&idx=1&sn=0 ...

  4. SAP MM MIGO & Return Delivery 组合实现部分数量的Reversal

    SAP MM MIGO & Return Delivery 组合实现部分数量的Reversal 在笔者看来,MIGO这个事务代码里的Return Delivery主要用于采购退货场景. 先找到 ...

  5. vue中引用swiper轮播插件

    有时候我们需要在vue中使用轮播组件,如果是在vue组件中引入第三方组件的话,最好通过npm安装,从而进行统一安装包管理. 申明:本文所使用的是vue.2x版本. 通过npm安装插件: npm ins ...

  6. 微信小程序(三)页面跳转和图片滑动切换

    跳转部分: 在index2.wxml中,添加跳转函数,如下所示:

  7. 智能POS如何获取日志&数据库文件

    使用Teamviewer连接安卓机器,文件传输 ================================================================== 智能POS查看数据 ...

  8. Git命令备忘

    最近在用Git,查了点相关资料,逻辑依然不太明了,先整理一部分备忘,以后补充 一.本地Git与Github/码云的关联 1. 设置本地用户名,邮箱 git config --global user.n ...

  9. JavaScript(三)数据类型转换

    类型转换JavaScript中的取值类型非常灵活,如当JavaScript期望使用一个布尔值的时候,你可以提供其它数据类型的,JavaScript将根据需要自行转换数据类型.如下示例: 10 + “o ...

  10. git 命令添加整个文件夹以及文件夹下的内容

    对于一个文件夹提交到服务器上,喜欢用 git add .(后面为".") 这种情况对于一个文件夹的还是很有用的,但出现了多个不同文件夹后,要分别提交就不能这么用了, 可以使用如下指 ...