写点什么

Web/Css 预处理语言的 Less 的使用 01

作者:Jeannette
  • 2021 年 12 月 12 日
  • 本文字数:1600 字

    阅读完需:约 5 分钟

初始使用(根据 less 官方指引)

1-初始安装

npm install -g less
复制代码

 

2-使用方式

2-1 命令式

通过 lessc 命令进行编译

// 1- 编译文件名 ---> 输出文件名lessc styles.less styles.css
复制代码

2-2 代码式

var less = require('less');

less.render('.class {width: (1+1)}', function (e, output) { console.log(output.css)})
复制代码

2-3 浏览器式

<!-- 引入通过引入less --><link rel="stylesheet/less" type="text/css" href="styles.less" />

<!-- 配置less, 需要处于less.js之前 --><script> less = { ...read the official website // http://lesscss.cn/usage/#using-less-in-the-browser-setting-options }</script>

<!-- 引入 `less.js`, 这里不同源会存在跨域问题,需要同源访问 --><script src="less.js"></script>

复制代码

3-变量(Variables)

3-1 变量声明 @

变量只能定义一次,其实与常量没什么区别。

变量不需要提前定义,属于懒加载

 

解决的问题:

通过变量的定义,减少重复的值

使用 @ 进行声明变量, 通过 : 作为赋值符号, 右边书写变量值,值如 css 一致

例如:

传统 css 写法:

a, .link {  color: #428bca; // 重复定义}.widget {  color: #fff;  background: #428bca;  // 重复定义}
复制代码

less 增强变量的概念的写法:

// Variables@link-color: #428bca; // sea blue // darken(), 可以使某种颜色加深程度从10-100%@link-color-hover:  darken(@link-color, 10%);// Usagea,.link {  color: @link-color;}a:hover {  color: @link-color-hover;}.widget {  color: #fff;  background: @link-color-hover;}
复制代码

 

3-2 变量替换 {replace-variables}å

  1. 选择器(Selectors)替换

// 编译前@my-selector: banner;.@{my-selector} {  font-weight: bold;  line-height: 40px;  margin: 0 auto;}// 编译后.banner {  font-weight: bold;  line-height: 40px;  margin: 0 auto;}
复制代码

 

  1. URLS 替换

用此方法,可以通过定义项目中的 cdn 服务位置,通过引入替换引入即可

 @images: "../img";body {  color: #444;  background: url("@{images}/white-sand.png"); }
复制代码

 

  1. 模块 @import 替换

通过定义公共路径,进行导入替换公共路径

@themes: "../../src/themes";@import "@{themes}/tidal-wave.less";
复制代码

 

  1. 属性值(Properties) 替换

替换公共的样式属性名

// 编译前@property: color;.widget {  @{property}: #0ee;  background-@{property}: #999;}// 编译后.widget {  color: #0ee;  background-color: #999;}
复制代码

 

  1. 变量名

// 编译前@fnord: "I am fnord.";// 定义变量@var: "fnord"; // 引入上面的变量的名字content: @@var; // 通过 @@var --> @fnord --> "I am fnord"// 编译后content: "I am fnord.";
复制代码

 

3-3 懒加载特性 Lazy Loading

重复定义变量不会报错,变量查找是从 {} 的范围,逐级 {} 从下到上 顺序去找,

直至找到最外层

// 编译前.lazy-eval {  width: @var;}@var: @a;@a: 9%

// 编译后.lazy-eval-scope { width: 9%;}
复制代码

 

// 编译前@var: 0;.class {  @var: 1;   .brass {    @var: 2;    three: @var;    @var: 3;  }  one: @var;}// 查找: one --> 先找 @val: 1 --> 有了就用它// 查找:three --> 先找 @val: 3 --> 有了就用它
复制代码

 

// 编译后.class {  one: 1;}.class .brass {  three: 3;}
复制代码

 

覆盖默认变量

// library@base-color: green;@dark-color: darken(@base-color, 10%);

// use of library@import "library.less";@base-color: red;

// 当从库里面定义了 @base-color之后// 引入了库的内容,所以@base-color: red, 会覆盖掉 @base-color: green; 的值
复制代码

 

错误告警

原因:lessc --clean-css styles.less styles.min.css

Unable to load plugin clean-css please make sure that it is installed under or at the same level as less

此命令是因为 Less 的版本太高了,需要降低版本即可

 

发布于: 3 小时前阅读数: 4
用户头像

Jeannette

关注

一位小码农…… 2019.07.19 加入

科学技术是第一生产力

评论

发布
暂无评论
Web/Css预处理语言的Less的使用01