前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >less介绍

less介绍

作者头像
用户7962184
发布2020-11-20 14:23:21
发布2020-11-20 14:23:21
69000
代码可运行
举报
文章被收录于专栏:没事多喝水没事多喝水
运行总次数:0
代码可运行

less介绍

基本介绍

less是一门css预处理语言,目的是使CSS更易维护和扩展,可以运行在Node或者浏览器端。

例子

代码语言:javascript
代码运行次数:0
复制
@base: #f938ab;

.box-shadow(@style, @c) when (iscolor(@c)) {
  -webkit-box-shadow: @style @c;
  box-shadow:         @style @c;
}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
  .box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box {
  color: saturate(@base, 5%);
  border-color: lighten(@base, 30%);
  div { .box-shadow(0 0 5px, 30%) }
}

输出

代码语言:javascript
代码运行次数:0
复制
.box {
  color: #fe33ac;
  border-color: #fdcdea;
}
.box div {
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
使用方法

先确认有npm。

代码语言:javascript
代码运行次数:0
复制
npm install -g less

编译写好的less文件

代码语言:javascript
代码运行次数:0
复制
lessc styles.less styles.css

less功能

变量

最基本的功能,但是也是最实用的功能

代码语言:javascript
代码运行次数:0
复制
@width: 10px;
@height: @width + 10px;

#header {
  width: @width;
  height: @height;
}

编译为

代码语言:javascript
代码运行次数:0
复制
#header {
  width: 10px;
  height: 20px;
}
组合

组合是一种将一组属性从一个规则集包含(或混入)到另一个规则集的方法。假设我们定义了一个类(class)如下:

代码语言:javascript
代码运行次数:0
复制
.mixin() {
  box-shadow+: inset 0 0 10px #555;
}
.myclass {
  .mixin();
  box-shadow+: 0 0 20px black;
}

编译为

代码语言:javascript
代码运行次数:0
复制
.myclass {
  box-shadow: inset 0 0 10px #555, 0 0 20px black;
}
嵌套

Less 提供了使用嵌套(nesting)代替层叠或与层叠结合使用的能力。

代码语言:javascript
代码运行次数:0
复制
#header {
  color: black;
  .navigation {
    font-size: 12px;
  }
  .logo {
    width: 300px;
  }
}

编译为

代码语言:javascript
代码运行次数:0
复制
#header {
  color: black;
}
#header .navigation {
  font-size: 12px;
}
#header .logo {
  width: 300px;
}

伪选择器也可以嵌套,看起来和html的组织架构一致,很舒服

代码语言:javascript
代码运行次数:0
复制
.clearfix {
  display: block;
  zoom: 1;

  &:after {
    content: " ";
    display: block;
    font-size: 0;
    height: 0;
    clear: both;
    visibility: hidden;
  }
}
嵌套规则
代码语言:javascript
代码运行次数:0
复制
.component {
  width: 300px;
  @media (min-width: 768px) {
    width: 600px;
    @media  (min-resolution: 192dpi) {
      background-image: url(/img/retina2x.png);
    }
  }
  @media (min-width: 1280px) {
    width: 800px;
  }
}

编译为

代码语言:javascript
代码运行次数:0
复制
.component {
  width: 300px;
}
@media (min-width: 768px) {
  .component {
    width: 600px;
  }
}
@media (min-width: 768px) and (min-resolution: 192dpi) {
  .component {
    background-image: url(/img/retina2x.png);
  }
}
@media (min-width: 1280px) {
  .component {
    width: 800px;
  }
}
运算

如果可能的话,算术运算符在加、减或比较之前会进行单位换算。计算的结果以最左侧操作数的单位类型为准。如果单位换算无效或失去意义,则忽略单位。无效的单位换算例如:px 到 cm 或 rad 到 % 的转换。

代码语言:javascript
代码运行次数:0
复制
// 所有操作数被转换成相同的单位
@conversion-1: 5cm + 10mm; // 结果是 6cm
@conversion-2: 2 - 3cm - 5mm; // 结果是 -1.5cm

// conversion is impossible
@incompatible-units: 2 + 5px - 3cm; // 结果是 4px

// example with variables
@base: 5%;
@filler: @base * 2; // 结果是 10%
@other: @base + @filler; // 结果是 15%

乘法和除法不作转换。@base: 2cm * 3mm; *// 结果是 6cm*

颜色也可以

代码语言:javascript
代码运行次数:0
复制
@color: #224488 / 2; //结果是 #112244
background-color: #112244 + #111; // 结果是 #223355
转义

转义(Escaping)允许你使用任意字符串作为属性或变量值。任何 ~"anything"~'anything' 形式的内容都将按原样输出.

代码语言:javascript
代码运行次数:0
复制
@min768: (min-width: 768px);//也可以写成@min768: ~"(min-width: 768px)";
.element {
  @media @min768 {
    font-size: 1.2rem;
  }
}

编译为

代码语言:javascript
代码运行次数:0
复制
@media (min-width: 768px) {
  .element {
    font-size: 1.2rem;
  }
}
函数

Less 内置了多种函数用于转换颜色、处理字符串、算术运算等。

下面这个例子将介绍如何利用 percentage 函数将 0.5 转换为 50%,将颜色饱和度增加 5%,以及颜色亮度降低 25% 并且色相值增加 8 等用法:

代码语言:javascript
代码运行次数:0
复制
@base: #f04615;
@width: 0.5;

.class {
  width: percentage(@width); 
  color: saturate(@base, 5%);
  background-color: spin(lighten(@base, 25%), 8);
}
利用嵌套实现命名空间

将变量和组合放到#bundle下

代码语言:javascript
代码运行次数:0
复制
#bundle() {
  .button {
    display: block;
    border: 1px solid black;
    background-color: grey;
    &:hover {
      background-color: white;
    }
  }
  .tab { ... }
  .citation { ... }
}

当需要使用时

代码语言:javascript
代码运行次数:0
复制
#header a {
  color: orange;
  #bundle.button();  // 还可以书写为 #bundle > .button 形式
}
作用域

首先在本地查找变量和组合,如果找不到,则从“父”级作用域继承。

代码语言:javascript
代码运行次数:0
复制
@var: red;

#page {
  @var: white;
  #header {
    color: @var; // white
  }
}
代码语言:javascript
代码运行次数:0
复制
@var: red;

#page {
  #header {
    color: @var; // white
  }
  @var: white;
}
导入

“导入”的工作方式和你预期的一样。你可以导入一个 .less 文件,此文件中的所有变量就可以全部使用了。如果导入的文件是 .less 扩展名,则可以将扩展名省略掉:

代码语言:javascript
代码运行次数:0
复制
@import "library"; // library.less
@import "typo.css";
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • less介绍
    • 基本介绍
    • 使用方法
  • less功能
    • 变量
    • 组合
    • 嵌套
    • 嵌套规则
    • 运算
    • 转义
    • 函数
    • 利用嵌套实现命名空间
    • 作用域
    • 导入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档