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

Less预处理——变量和嵌套

系列文章目录


文章目录

  • 系列文章目录
    • 一、Less 变量
      • 1、选择器变量
      • 2、属性变量
      • 3、url 变量
      • 4、声明变量
      • 5、变量运算
      • 6、变量的作用域
      • 7、用变量去定义变量
    • 二、Less 嵌套
      • 1、& 的使用
      • 2、媒体查询
      • 3、小技巧:添加私有样式


一、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%;
}

在这里插入图片描述

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;
}

在这里插入图片描述

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;
}

在这里插入图片描述

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;
}

在这里插入图片描述

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;
}

在这里插入图片描述

7、用变量去定义变量

index.less 文件

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

index.css 文件

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

在这里插入图片描述

二、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;
}

在这里插入图片描述

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")

这里是 前端杂货铺,期待您的 三连 + 关注

相关文章:

  • BEVerse 中数据集预处理代码浅析
  • 算法每日一题(合并两个有序的数组)
  • SpringBoot整合Swagger
  • ProcExp的利用
  • C++内存管理
  • 33、Java 异常掌握这些就够了(图解 Java 中的异常)
  • springboot-方法处理4-消息转换器
  • FPGA底层资源综述
  • CLIP扩展
  • 从一维卷积、因果卷积(Causal CNN)、扩展卷积(Dilation CNN) 到 时间卷积网络 (TCN)
  • 高等数学(第七版)同济大学 习题8-2 个人解答
  • [HJ56 完全数计算]
  • 【nlp】天池学习赛-新闻文本分类-机器学习
  • 机器人系统,如何快速算法开发与原型机验证?
  • 调用静态方法
  • [译]CSS 居中(Center)方法大合集
  • ComponentOne 2017 V2版本正式发布
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • js如何打印object对象
  • XForms - 更强大的Form
  • 初识MongoDB分片
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 基于web的全景—— Pannellum小试
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前嗅ForeSpider采集配置界面介绍
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 用Canvas画一棵二叉树
  • gunicorn工作原理
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • #100天计划# 2013年9月29日
  • #考研#计算机文化知识1(局域网及网络互联)
  • (function(){})()的分步解析
  • (初研) Sentence-embedding fine-tune notebook
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (九)One-Wire总线-DS18B20
  • (七)Knockout 创建自定义绑定
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .net core Swagger 过滤部分Api
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET性能优化(文摘)
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .py文件应该怎样打开?
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Android]Tool-Systrace
  • [Angularjs]ng-select和ng-options
  • [codeforces]Levko and Permutation
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [java] 23种设计模式之责任链模式
  • [Linux] 一文理解HTTPS协议:什么是HTTPS协议、HTTPS协议如何加密数据、什么是CA证书(数字证书)...
  • [Mvc]在ASP.NET MVC中使用Repeater