当前位置: 首页 > news >正文

Less基础语法

Less 是一种 CSS 预处理器,提供了变量、嵌套、混合(Mixins)、函数等高级功能,使 CSS 更加模块化、可维护和高效。以下是 Less 的 基础语法 和常用特性。


文章目录

    • 一、基本语法
      • 1. **变量(Variables)**
      • 2. **嵌套(Nesting)**
      • 3. **父选择器 `&`**
      • 4. **混合宏(Mixins)**
      • 5. **运算(Operations)**
      • 6. **函数(Functions)**
      • 7. **导入(Import)**
      • 8. **命名空间与访问控制**
      • 9. **条件判断与循环**
        • 条件判断(Guards)
        • 循环(Looping)
    • 二、编译方式
    • 三、建议

一、基本语法

1. 变量(Variables)

使用 @ 定义变量,常用于颜色、字体、尺寸等统一管理。

@primary-color: #3498db;
@font-size: 16px;body {color: @primary-color;font-size: @font-size;
}

2. 嵌套(Nesting)

模仿 HTML 结构进行样式嵌套,提高可读性和结构清晰度。

nav {ul {list-style: none;}li {display: inline-block;}a {color: @primary-color;text-decoration: none;&:hover {color: darken(@primary-color, 10%);}}
}

3. 父选择器 &

用于引用父级选择器,常用于伪类、伪元素或 BEM 命名规范。

.button {background: #fff;border: 1px solid #ccc;&--primary {background: @primary-color;color: white;}&:hover {background: darken(@primary-color, 10%);}
}

4. 混合宏(Mixins)

将一组样式封装成一个“函数”,在多个地方复用。

.border-radius(@radius) {border-radius: @radius;
}.box {.border-radius(10px);
}

你也可以定义带默认值的 Mixin:

.transition(@property: all, @duration: 0.3s) {transition: @property @duration ease;
}.button {.transition(width, 0.5s);
}

5. 运算(Operations)

Less 支持数学运算,方便动态计算样式值。

@width: 100px;
@padding: 20px;.container {width: @width + @padding * 2; // 计算为 140px
}

6. 函数(Functions)

Less 提供了丰富的内置函数,如颜色操作、类型判断等。

@base-color: #ad141e;.box {background-color: lighten(@base-color, 20%); // 变浅border-color: darken(@base-color, 10%);     // 变深opacity: fadein(@base-color, 80%);          // 设置透明度
}

7. 导入(Import)

可以导入其他 .less.css 文件。

// _variables.less
@primary-color: #3498db;// main.less
@import "variables";body {background: @primary-color;
}

8. 命名空间与访问控制

你可以将 Mixin 封装到一个命名空间中,避免污染全局作用域。

#theme() {.default-colors() {background: #f0f0f0;color: #333;}
}.use-theme {#theme.default-colors();
}

9. 条件判断与循环

条件判断(Guards)

通过 when 实现逻辑判断。

.mixin(@a) when (lightness(@a) >= 50%) {background: black;
}
.mixin(@a) when (lightness(@a) < 50%) {background: white;
}.test {.mixin(#ddd);
}
循环(Looping)

Less 不直接支持 for 循环,但可以通过递归实现:

.generate-columns(5);.generate-columns(@n, @i: 1) when (@i <= @n) {.col-@{i} {width: percentage((@i / @n));}.generate-columns(@n, (@i + 1));
}

二、编译方式

你可以通过以下方式将 .less 编译为 .css

  • Node.js + lessc

    npm install -g less
    lessc styles.less styles.css
    
  • VSCode 插件:Easy LESSLive Sass Compiler

  • 构建工具集成:Webpack、Vite、Gulp 等均支持 Less 插件。


三、建议

技术点推荐做法
模块化开发使用 _partial.less 分文件组织代码
变量命名使用语义化命名如 @color-primary, @spacing-md
组件化样式每个组件一个 .less 文件,配合命名空间
避免过度嵌套控制嵌套层级不超过 3 层
使用 Mixin 而非继承提升可维护性
注释与文档使用注释说明变量用途和组件说明
http://www.xdnf.cn/news/749881.html

相关文章:

  • Python打卡训练营学习记录Day41
  • C++:参数传递方法(Parameter Passing Methods)
  • day28 python训练营 类的定义与方法
  • 【Java】ForkJoin 框架
  • linux 1.0.7
  • VC++: identifer “M_PI“ is undefined
  • B3623 枚举排列(递归实现排列型枚举)
  • javaScirpt学习第五章(函数)-第二部分
  • 应用于分子生成的免训练引导多模态流模型 - TFG-Flow 评测
  • 用不太严谨的文字介绍遥测自跟踪天线的基本原理
  • Java中的继承
  • Target店铺应该如何入驻?
  • 自定义Spring Boot Starter
  • 【课堂笔记】标签传播算法Label Propagation Algorithm(LPA)
  • DFS入门刷题
  • vasp的输出文件解读--OUTCAR
  • 常见的RAG文档解析辅助工具汇总及企业选型思考
  • 一周学会Pandas2之Python数据处理与分析-数据重塑与透视-pivot() - 透视 (长 -> 宽,有限制)
  • [SC]SystemC在CPU/GPU验证中的应用(四)
  • 图像修复的可视化demo代码
  • PostIn入门教程 - 使用IDEA插件快速生成API接口定义
  • 流媒体基础分析:延迟分析与安全性保障
  • 牛客小白月赛117
  • Baklib知识中台驱动服务升级
  • OD 算法题 B卷【模拟消息队列】
  • Linux环境搭建MCU开发环境
  • [001]从操作系统层面看锁的逻辑
  • 计算机组织原理第三章
  • LearnOpenGL-笔记-其十二
  • 《高等数学》(同济大学·第7版) 的 详细章节目录