## Less 概述
### Less是什么?
> Less是一门css预处理语言
### css存在的缺陷?
> 缺乏逻辑,缺乏继承和复用能力,不同的浏览器语法差异性大。
> 为了让 CSS 富有逻辑性,短板不那么严重,涌现出了 一些神奇的预处理语言。 它们让 CSS 彻底变成一门 可以使用 变量 、循环 、继承 、自定义方法等多种特性的标记语言,逻辑性得以大大增强。比如Less,Sass!
### Less 为css带来了什么能力?
> * Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。
> * Less 可以运行在 Node 或浏览器端。
### Less初次见面!
复用能力
* css写法:
```
#box{
width:100px;
height:100px;
border-top:dotted 1px black;
border-bottom:solid 2px black;
}
#list{
width:20px;
height:40px;
border-top:dotted 1px black;
border-bottom:solid 2px black;
}
```
* 改成less写法:
```
.border-set() {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#box {
width:100px;
height:100px;
.border-set();
}
#list {
width:20px;
height:40px;
.border-set();
}
```
逻辑能力:
less写法
~~~
.mixin (@a) when (@a = 20px){
color:red;
}
.mixin (@a) when (@a < 20px){
color:blue;
}
~~~
~~~
h2 {
.mixin(20px)
}
h3 {
.mixin(10px)
}
~~~
等同于css
~~~
h2 {
color:red;
}
h3 {
color:blue;
}
~~~
继承能力:
~~~
.a {
color:red;
}
.b:extend(.a){}
~~~
~~~
.a {
color:red;
}
.b {
color:red;
}
~~~
兼容解决
~~~
.a{
-webkit-animation:fadeIn 1s;
-moz-animation:fadeIn 1s;
-ms-animation:fadeIn 1s;
-o-animation:fadeIn 1s;
animation:fadeIn 1s;
}
.b{
-ms-transition: width 2s;/*IE*/
-moz-transition: width 2s; /* Firefox 4 */
-webkit-transition: width 2s; /* Safari 和 Chrome */
-o-transition: width 2s; /* Opera */
transition:width 2s; /*标准写法*/
}
~~~
~~~
.pre(@style,@value){
-webkit-@{style}: @value;
-moz-@{style}: @value;
-ms-@{style}: @value;
@{style}: @value;
}
.animation(@value){
.pre(animation,@value);
}
.transition(@arg){
.pre(transition,@arg);
}
.a{
.animate(1s);
}
.b{
.transition(2s);
}
~~~
### 如何在浏览器端运行Less?
假设你编写了一个study.less的文件
* 方法一
1.首先直接在页面引入你编写的study.less文件
2.然后在less文件后面再引入less.js (less官网可下载到)
3.注意顺序,less.js必须放在你书写的less文件后面
```html
<link rel="stylesheet/less" type="text/css" href="study.less" />
<script src="less.js" type="text/javascript"></script>
```
* 方法二
```js
$ npm install -g less
$ lessc study.less study.css
```
然后再把生成的study.css 文件引入到页面中去
- Less
- 课程规划
- Less概述
- 变量
- 混合
- 嵌套
- 继承
- 导入
- 函数
- 其他
- 实战
- ES6
- 课程规划
- ES6概述
- let和const命令
- 变量的解构赋值
- 字符串扩展
- 函数扩展
- 数组扩展
- Set和Map数据结构
- Symbol
- Generator 函数
- Promise对象
- Class语法
- Module 的语法
- ES7和ES8
- 实战
- VUE
- 课程规划
- vue概述
- vue实例
- 模版语法
- 计算属性和侦听器
- Class和Style的绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 过渡和动画
- 自定义指令
- 过滤器
- 响应式原理
- 实战课程
- Node
- 课程规划
- 课程概述
- node入门实例
- 模块系统
- 回调函数
- 全局对象
- 常用模块介绍
- 常用模块介绍-1
- 常用模块介绍-2
- 常用模块介绍-3
- npm使用
- express的使用
- express的使用-1
- webpack基础
- 实战
- 微信小程序
- 课程规划
- 课程概述
- 基本配置和生命周期
- wxml模版
- wxss
- wxs
- 组件
- 微信API
- 自定义组件开发
- 实战小程序
- Element
- 课程规划
- 课程概述
- 特性介绍
- 组件介绍-基础组件
- 组件介绍-表单组件
- 组件介绍-数据展示组件
- 组件介绍-提示组件
- 组件介绍-导航组件
- 组件介绍-其他组件
- 综合案例