Less预处理——变量和嵌套

简介: Less预处理——变量和嵌套

一、Less 变量

1、选择器变量

让选择器变成动态的

index.html 文件

  • id 和 class 选择器
  <div id="wrap">
      Hello Less!
  </div>
  <div class="wrap">
      Hello World!
  </div>

index.less 文件

  • 第一种是 确定了 选择器的类型(id 选择器)
  • 第二种是 不确定 选择器的类型(id/class 选择器)
// 选择器变量
@mySelector: #wrap;
@wrap: wrap;
@{mySelector} {
    color: #ccc;
    width: 50%;
}
.@{wrap} {
    color: skyblue;
    width: 50%;
}
#@{wrap} {
    color: aqua;
    width: 50%;
}

index.css 文件

  • 自动转义后的 css 文件
#wrap {
  color: #ccc;
  width: 50%;
}
.wrap {
  color: skyblue;
  width: 50%;
}
#wrap {
  color: aqua;
  width: 50%;
}

c98ff16a8c7e4e009c2f700393bab66e.png

2、属性变量

减少代码书写量

index.html 文件

备注:这是一个公共的HTML结构,以下测试均使用该结构。

  <div id="wrap">
      Hello Less!
  </div>

index.less 文件

  • 属性变量,设置属性
// 选择器变量
@mySelector: #wrap;
@wrap: wrap;
// 属性变量
@borderStyle: border-style;
@solid: solid;
@{mySelector} {
    @{borderStyle}: @solid;
}

index.css 文件

  • 自动转义后的 css 文件
#wrap {
  border-style: solid;
}

d37463f1877e44c99a2f5a96f69ecd71.png

3、url 变量

项目结构改变时,修改其变量就可以

index.less 文件

@images: "../../img";
body {
    background: url("@{images}/xxx.png");
}

index.css 文件

  • 自动转义后的 css 文件
body {
  background: url("../../img/xxx.png");
}

4、声明变量

结构:@name: {属性: 值}

使用:@name()

示例:超出的内容,使用 ... 表示

index.less 文件

@Rules: {
       width: 60px;
       height: 30px;
       border: 1px solid #ccc;
       /*第一步: 溢出隐藏 */
       overflow: hidden;
       /* 第二步:让文本不会换行, 在同一行继续 */
       white-space: nowrap;
       /* 第三步:用省略号来代表未显示完的文本 */
       text-overflow: ellipsis;
}
#wrap {
    @Rules();
}

index.css 文件

  • 自动转义后的 css 文件
#wrap {
  width: 60px;
  height: 30px;
  border: 1px solid #ccc;
  /*第一步: 溢出隐藏 */
  overflow: hidden;
  /* 第二步:让文本不会换行, 在同一行继续 */
  white-space: nowrap;
  /* 第三步:用省略号来代表未显示完的文本 */
  text-overflow: ellipsis;
}

b446ba79c8b54a738058aa9bc525bd89.png

5、变量运算

  • 加减法时,以第一个数据的单位为基准
  • 乘除法时,注意单位一定要统一
  • 注意添加空格

index.less 文件

@width: 300px;
@color: #ccc;
#wrap {
    width: @width - 20;
    height: @width - 20 * 2;
    margin: (@width - 200) * 2;
    color: @color*1;
    background-color: @color + #111;
}

index.css 文件

  • 自动转义后的 css 文件
#wrap {
  width: 280px;
  height: 260px;
  margin: 200px;
  color: #cccccc;
  background-color: #dddddd;
}

a241f1a613e9433b9763a6b19eaeac54.png

6、变量的作用域

就近原则

index.less 文件

@var:@a;
@a:100%;
#wrap {
    width: @var;
    @a:9%;
    border: 1px solid #ccc;
}

index.css 文件

  • 自动转义后的 css 文件
#wrap {
  width: 9%;
  border: 1px solid #ccc;
}

f3081857c87344f89de316f70210e97f.png

7、用变量去定义变量

index.less 文件

@fond:@var;
@var:'fond';
#wrap::after {
    content: @var;
}

index.css 文件

  • 自动转义后的 css 文件
#wrap::after {
  content: 'fond';
}

cad2cac8631c460884b865c85b88b900.png

二、Less 嵌套

1、& 的使用

&:代表的上一层选择器的名字

index.html 文件

  • 多层级的嵌套
<div class="center">
    <ul id="list">
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>

index.less 文件

  • &:代表的上一层选择器的名字
  • 可写可不写
.center {
    width: 100px;
    height: 100px;
    background: red;
    & #list {
        width: 50px;
        height: 50px;
        background: skyblue;
        li {
            width: 20px;
            height: 20px;
            background: #ccc; 
        }
    }
}

index.css 文件

  • 自动转义后的 css 文件
.center {
  width: 100px;
  height: 100px;
  background: red;
}
.center #list {
  width: 50px;
  height: 50px;
  background: skyblue;
}
.center #list li {
  width: 20px;
  height: 20px;
  background: #ccc;
}

45910647506b468e9a431d5d1f2dff9d.png

2、媒体查询

index.less 文件

#main {
    @media screen {
        @media (max-width: 768px) {
            width: 100px;
        }
    }
    @media tv {
        width: 2000px;
    }
}

index.css 文件

  • 自动转义后的 css 文件
@media screen and (max-width: 768px) {
  #main {
    width: 100px;
  }
}
@media tv {
  #main {
    width: 2000px;
  }
}

3、小技巧:添加私有样式

示例:实现样式从隐藏到显示的切换

index.less 文件

#main {
    &.show {
        display: block;
    }
}
.show {
    display: none;
}

index.css 文件

  • 自动转义后的 css 文件
#main.show {
  display: block;
}
.show {
  display: none;
}

index.html 文件

  • 获取 main 节点,实现样式从隐藏到显示
const main = document.getElementById('main')
main.classList.add("show")
相关文章
|
定位技术
基于Leaflet的轨迹模拟回放
在gis场景中,轨迹回放是一个很常见的场景。比如在导航软件中,在行程结束后根据运动轨迹生成运动图,在keep软件中,会自动记录用户的锻炼轨迹,在结束后可以看到自己的运动轨迹等等。这些需求都是设备在运行中自动记录相应的点,在结合gis模拟即可。
1912 0
基于Leaflet的轨迹模拟回放
|
9月前
|
机器学习/深度学习 人工智能 API
MaaS市场全球领导者!阿里云5项能力获评最高评级
18日,Omdia发布《2025年全球企业级MaaS市场分析》报告,阿里云获评全球领导者,在基础模型、精调、Agent开发等5大维度获最高评级,为中国第一。报告指出,MaaS已进入2.0阶段,需提供全栈AI能力。阿里云凭借PAI-灵骏、百炼平台及Qwen系列大模型,成为领先“能力交付者”。其新技术Aegaeon降低GPU用量82%,通义千问研究获NeurIPS 2025最佳论文奖,显著提升模型效率。目前,阿里通义大模型服务超100万客户,覆盖国际奥委会、宝马、LV等知名机构。2025上半年,《财富》中国500强中7成已用GenAI,阿里云渗透率达53%,居首。
841 9
|
SQL 弹性计算 关系型数据库
MCP我知道:手搓代码学原理到应用,附讲解视频
MCP火爆异常,目前大量资料介绍了基本概念,与LLM联动这块通常是讲如何集成在Claude、Cursor这些系统,隐藏了其底层细节原理。本文将从0编写client、Server代码、搭建QwQ-32B大模型、接入云数据库,讲解通过联动外围工具来解决LLM“知识茧房”问题。最后总结并展望了MCP未来的发展。
1819 14
MCP我知道:手搓代码学原理到应用,附讲解视频
|
SQL 存储 JSON
更快更强,SLS 推出高性能 SPL 日志查询模式
从海量的日志数据中,按照各种灵活的条件进行即时查询搜索,是可观测场景下的基本需求。本文介绍了 SLS 新推出的高性能 SPL 日志查询模式,支持 Unix 风格级联管道式语法,以及各种丰富的 SQL 处理函数。同时通过计算下推、向量化计算等优化,使得 SPL 查询可以在数秒内处理亿级数据,并支持 SPL 过滤结果分布图、随机翻页等特性。
14005 249
|
存储
计算机组成原理(7)----CPU内部单总线数据通路
计算机组成原理(7)----CPU内部单总线数据通路
2409 0
|
存储 移动开发 JavaScript
React18组件一键转换Vue3组件(持续更新中)
其实现在Vue也是很火的框架随着Vue3的诞生,博主其实最终目标是想整合一套React+一套Vue组件库在一起的,但是重写一遍React的组件很费工作量也不现实,因为我是单人开发,于是就萌生了写一个React组件转换Vue组件的工具,功能性将逐步开发更新到博客,喜欢的可以关注一下
1524 1
React18组件一键转换Vue3组件(持续更新中)
|
数据处理 定位技术 开发者
甘特图、IPO图、DFD图
甘特图、IPO图、DFD图
|
SQL 关系型数据库 MySQL
介绍5款 世界范围内比较广的 5款 mysql Database Management Tool
介绍5款 世界范围内比较广的 5款 mysql Database Management Tool
1010 0
|
机器学习/深度学习 自然语言处理 搜索推荐
深度学习之分类网络
深度学习的分类网络(Classification Networks)是用于将输入数据分配到预定义类别的神经网络。它们广泛应用于图像分类、文本分类、语音识别等任务。以下是对深度学习分类网络的详细介绍,包括其基本概念、主要架构、常见模型、应用场景、优缺点及未来发展方向。
1555 4
|
Web App开发 数据安全/隐私保护 虚拟化
WSL2安装及图形界面使用
WSL2安装及图形界面使用
1322 0

热门文章

最新文章