less 基本用法指南

作者: tww844475003 分类: 前端开发 发布时间: 2021-06-27 11:37

什么是 lesss ?

Less 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,这些拓展令 CSS 更加强大与优雅。

安装及使用

  • 安装
npm i -g less
  • 使用

在命令行中运行 Sass

lessc input.less output.css

基本用法

  • 变量(Variables)
@width: 100px;;

.block {
  width: @width;
}
  • 混合(Mixins)
.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

.block div {
  color: #111;
  .bordered();
}

.block p {
  color: red;
  .bordered();
}
  • 嵌套(Nesting)
.block {
  color: black;
  .h1 {
    font-size: 22px;
  }
  .h2 {
    font-size: 18px;
  }
  &:hover {
    font-size: 12px;
  }
}

@规则嵌套和冒泡

.block {
  width: 300px;
  @media (min-width: 768px) {
    width: 600px;
    @media  (min-resolution: 192dpi) {
      background-color: red;
    }
  }
  @media (min-width: 1280px) {
    width: 800px;
  }
}
  • 运算(Operations)

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

// 所有操作数被转换成相同的单位
@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%
  • 转义(Escaping)
@min768: ~"(min-width: 768px)";
.block {
  @media @min768 {
    font-size: 1.2rem;
  }
}
  • 函数(Functions)
@base: #f04615;
@width: 0.5;

.block {
  width: percentage(@width); // returns `50%`
  color: saturate(@base, 5%);
  background-color: spin(lighten(@base, 25%), 8);
}

更多函数介绍:https://less.bootcss.com/functions/

  • 命名空间和访问符

有时,出于组织结构或仅仅是为了提供一些封装的目的,你希望对混合(mixins)进行分组。你可以用 Less 更直观地实现这一需求。假设你希望将一些混合(mixins)和变量置于 #bundle 之下,为了以后方便重用或分发:

#bundle() {
  .button {
    display: block;
    border: 1px solid black;
    background-color: grey;
    &:hover {
      background-color: white;
    }
  }
}

.link a {
  color: orange;
  #bundle.button();  // 还可以书写为 #bundle > .button 形式
}
  • 映射(Maps)
#colors() {
  primary: blue;
  secondary: green;
}

.button {
  color: #colors[primary];
  border: 1px solid #colors[secondary];
}
  • 作用域(Scope)

Less 中的作用域与 CSS 中的作用域非常类似。首先在本地查找变量和混合(mixins),如果找不到,则从“父”级作用域继承。

@var: red;

#page {
  @var: white;
  #header {
    color: @var; // white
  }
}
  • 注释(Comments)
/* 一个块注释
 * style comment! */
@var: red;

// 这一行被注释掉了!
@var: white;
  • 导入(Importing)
@import "library"; // library.less
@import "typo.css";

前端开发那点事
微信公众号搜索“前端开发那点事”

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注