css 原生变量设置
● 定义变量
html {/* css 原生也支持变量的设置 */--color: #bfa;--length: 100px;}
● 使用变量
.box1 {width: var(--length);height: var(--length);background-color: var(--color);}
less 简介
来源:less 简介
less 是一门 css 预处理语言,less 是一个 css 的增强版,通过 less 可以编写更少的代码实现更强大的样式
在 less 中添加了许多的新特性:
● 对变量的支持
● 对 mixin 的支持
● ……
less 语法大体上和 css 语法一致,但是 less 中增加了许多对 css 的扩展
所以浏览器无法直接执行 less 代码,要执行必须将 less 转换为 css,然后再由浏览器执行。
less 插件
● Easy Less
VSCode 中添加插件 Easy Less
less 插件测试
项目中新建文件 css-style.less
编写下面内容
body {width: 100px;height: 100px;div {color: red;}}
保存后,同文件夹下自动生成了 style.css,内容如下
body {width: 100px;height: 100px;}body div {color: red;}
less 注释
| 值 | 作用 |
|---|---|
// |
less 中的单行注释,不会被解析到 css 文件中 |
/**/ |
less 中的多行注释,会被解析到 css 文件中 |
less 变量
来源:less 变量
变量,在变量中可以存储一个任意的值
并且我们可以在需要时,任意修改变量中的值
● 变量定义
变量的语法:@变量名:变量值
@a:100px;@b:#bfa;@c:box6;@img: '../images/';@a:200px;
● 变量使用
.box1 {//使用变量时,如果是直接使用则以 @变量名 的形式使用即可。width: @a;color: @b;}//作为类名或者一部分值使用时,必须以 @{变量名} 的形式使用.@{c} {width: @a;background-image: url("@{img}1.png");height: @d;}//可以在变量声明之前使用变量@d:335px;div{width: @a;//引用 width 的宽度height: $width;}
生成 css 效果
.box1 {/*334*/background-color: #bfa;}.box1 {width: 200px;color: #bfa;}.box6 {width: 200px;background-image: url("../images/1.png");height: 335px;}div {width: 200px;height: 200px;}
父元素和扩展
来源:父元素和扩展
● 父元素
定义
/*&*/.box1 {>.box2 {color: red;//& 表示外层的父元素 box2&:hover {color: blue;}}//为 box1 设置一个 hover//& 表示外层的父元素 box1&:hover {color: orange;}}
生成 css
/*&*/.box1 > .box2 {color: red;}.box1 > .box2:hover {color: blue;}.box1:hover {color: orange;}
● 扩展
/*extend*/.p1 {width: 100px;height: 200px;}//:extend() 对当前选择器扩展指定选择器的样式(选择器分组).p2:extend(.p1) {color: red;}.p3 {//直接对指定的样式进行引用,这里相当于将 p1 的样式在这里进行了复制//mixin 混合.p1();}//使用类选择器时可以在选择器后面添加 (),这时实际上创建了一个 mixins.p4() {width: 100px;height: 100px;background-color: blue;}.p5 {.p4();}
生成 css
/*extend*/.p1,.p2 {width: 100px;height: 200px;}.p2 {color: red;}.p3 {width: 100px;height: 200px;}.p5 {width: 100px;height: 100px;background-color: blue;}
混合函数
来源:混合函数
● 定义使用
//混合函数,在混合函数中可以直接设置变量.test(@w,@h,@bg-color) {width: @w;height: @w;border: 1px solid @bg-color;}div {//调用一个混合函数,按顺序传递参数//.test(100px,200px,blue);//调用一个混合函数,按指定参数名称传递参数.test(@bg-color:red,@h:100px,@w:200px);}span {//调用 less 定义的函数,取颜色中间值color: average(red,yellow);}
● 生成的 css
div {width: 200px;height: 200px;border: 1px solid red;}span {color: #ff8000;}
less 补充
来源:less 补充
import
//import 将其它 less 引入当前文件,当前文件生成 css 时,会加入引入文件生成的 css@import "syntax2.less";div {}
运算
● 定义 less
div {//在 less 中所有的数值都可以直接进行运算// + - * /width: 200px + 100px;height: 200px * 2;border: 1px solid red;}
● 生成的 css
div {width: 300px;height: 400px;border: 1px solid red;}
浏览器中定位 less
因为 less 最终是生成 css 在浏览器中呈现,假如某个元素需要修改,怎么定位到具体的 less 呢?
● 找到 less 插件,复制下面的内容
● VSCode 设置
设置-扩展-Easy LESS configuration-在 settings.json 中编辑
设置下面内容,主要是 "sourceMap": true
{"typescript.locale": "zh-CN","editor.fontSize": 18,"emmet.triggerExpansionOnTab": true,"liveServer.settings.AdvanceCustomBrowserCmdLine": "","liveServer.settings.ChromeDebuggingAttachment": false,"liveServer.settings.port": 5500,"files.autoSave": "afterDelay","less.compile": {"compress": false,"sourceMap": true,"out": true}}
● other.less
div {//在 less 中所有的数值都可以直接进行运算// + - * /width: 200px + 100px;height: 200px * 2;border: 1px solid red;}
● 同目录生成了 other.css
div {width: 300px;height: 400px;border: 1px solid red;}/*# sourceMappingURL=./other.css.map */
● 同目录生成了 other.css.map
{"version":3,"sources":["other.less"],"names":[],"mappings":"AAAA;EAGI,YAAA;EACA,aAAA;EACA,qBAAA"}
● 测试页面
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><link rel="stylesheet" href="./css/other.css"></head><body><div class="box1"></div></body></html>
● 浏览器测试