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

Less的使用

文章目录

  • 什么是less
      • css预处理器
  • 为什么使用less
  • 如何使用Less
  • Less语法学习
      • 注释
      • 运算
      • 嵌套
      • 变量
      • 导入
      • 导出
      • 禁止导出
      • less在开发中的使用
        • 准备工作
        • 头部布局

什么是less

LESS是一种CSS预处理器,扩展了CSS的功能。

css预处理器

我们知道我们的浏览器只认识html,css,js这些语言。而我们的less语言浏览器并不认识。所以我们得在我们的代码给浏览器之前进行一个预先的处理,把less转换为浏览器认识的css。这就是css预处理器。
类似的css预处理器还有​​Sass

为什么使用less

有人会说less这么麻烦还有预先处理为什么要用它呢?
这就不得不提到css的缺点了:

  1. 冗余度高:重复属性值需手动书写,难以复用。
  2. 缺乏逻辑性:不支持变量、函数等动态特性,难以实现条件判断或循环。
  3. 维护困难:全局样式的修改需逐个查找替换,模块化程度低。

下面来介绍less的优势。

  1. 减少冗余度:重复属性值不需手动书写。
  2. 支持折叠代码,方便整理:可折叠几十行甚至更多。再也不用鼠标滑轮滚到冒烟了。
  3. 注释嵌套:css无法嵌套注释,less可以。
  4. 模块化开发​:通过变量和混合实现代码复用,提升可维护性。
  5. 增强功能​​:支持运算、嵌套、函数等编程特性,减少重复代码量。
  6. 兼容性​​:编译后生成标准CSS,兼容所有浏览器。
  7. 方便移动端开发:详情请看我之前发表的博客==>移动web开发

如何使用Less

我们上面说到浏览器不认识css,我们如何把less转换成给浏览器认识的css呢?
答:VS Code 插件:Easy LESS只要我们ctrl+S保存 less文件后自动生成对应的 CSS 文件

在这里插入图片描述

Less语法学习

注释

  • 单行注释
    • 语法:// 注释内容
    • 快捷键:ctrl + /
  • 块注释
    • 语法:/* 注释内容 */
    • 快捷键: Shift + Alt + A
// 单行注释

/* 这是less,当我们ctrl+S保存时,只有块注释转换成css,单行注释不会转换成css
  这是块注释
  允许换行
*/
/* 
  这是块注释
  允许换行
*/

运算

  • 加、减、乘直接书写计算表达式
  • 除法需要添加 小括号 或 .
  • 表达式存在多个单位以第一个单位为准
.box {
  // 左边.less文件  后面的注释是生成的.css文件
  width: 100 + 20px; // width: 120px;
  width: 100 - 80px; // width: 20px;
  width: 100 * 2px;  // width: 200px;

  // 除法 / → (计算表达式) 或 ./ → 推荐()
  // 注意使用./会有报错,但是仍然可执行。所以推荐使用(), ()不会报错
  width: 68 / 37.5rem;  // width: 68 / 37.5rem;
  width: (68 / 37.5rem); // width: 1.81333333rem;
  width: 29 ./ 37.5rem; // width: 0.77333333rem;

  // 如果表达式有多个单位,最终css里面以第一个单位为准
  // 这里输出的单位就是px
  height: (29px / 37.5rem); // height: 0.77333333px;
}

嵌套

作用:快速生成后代选择器

提示:用 & 表示当前选择器,不会生成后代选择器,通常配合伪类或伪元素使用

.father {
  color: red;
  .son {
    width: 200px;
    a {
      color: green;
      // & 表示的是当前选择器,代码写到谁的大括号里面就表示谁 → 不会生成后代选择器
      // 应用:配合hover伪类或nth-child结构伪类使用
      &:hover {
        color: blue;
      }
    }
    // a{ &:hover { color: blue;} } 相当于下面的写法。
    // a:hover {
    //   color: blue;
    // }
  }
}

对应的css如下。

.father {
  color: red;
}
.father .son {
  width: 200px;
}
.father .son a {
  color: green;
}
.father .son a:hover {
  color: blue;
}

变量

概念:容器,存储数据

作用:存储数据,方便使用和修改

语法:

  • 定义变量:@变量名: 数据;
  • 使用变量:CSS属性:@变量名;
// 定义变量
@myColor: pink;
// 使用变量
.box {
  color: @myColor;
}
a {
  color: @myColor;
}

导入

作用:导入 less 公共样式文件

语法:导入: @import “文件路径”;

提示:

  • 如果是 less 文件可以省略后缀
  • 注意写完一定一定要加分号; 不然报错
// 这是 index.less 文件
@import './base.less';
@import './common';

在这里插入图片描述

导出

写法:在 less 文件的第一行添加 // out: 存储URL

注意:

  • 文件夹名称后面添加 /
  • 导出的直接就是css文件了。
// 这是 14-less-导出.less  文件
// 注意加了out: 就不在是注释的意思了,而是导出。

// 将14-less-导出.less 导出到 和14-less-导出.less文件同级的index.css文件中
// out: ./index.css

// 将14-less-导出.less 导出到 和14-less-导出.less文件同级的mycss文件夹下的index.css文件中
// out: ./mycss/index.css

禁止导出

写法:在 less 文件第一行添加: // out: false

// out: false

使用场景:如下图,base.less 和 common.less就不需要生成同名的.css文件,只需要生成index.css就行。因为我们已经将base.less 和 common.less导入到了index.less中了,只需要生成index.css,html页面就可以直接使用了。

在这里插入图片描述

less在开发中的使用

准备工作
  • 记得设计稿的尺寸调整为 @2x
  • 项目目录:将素材里面的assets,iconfont, js, less 复制出来,再去新建index.html并在less新建index.less 写入如下代码

    // out: ../css/index.css
    
    @import "./base";
    

在这里插入图片描述

  • HTML 结构
<link rel="stylesheet" href="./iconfont/iconfont.css">
<!-- 这里的css是less生成的-->
<link rel="stylesheet" href="./css/index.css">

<body>
  ......
  <script src="./js/flexible.js"></script>
</body>
  • less 样式
// out: ../css/

@import "./base";
头部布局
  • HTML 结构
<!-- 头部 -->
<header>1</header>
  • less 样式
// 头部
header {
  display: flex;
  justify-content: space-between;
  padding: 0 (15 / @rootSize);
  height: (44 / @rootSize);
  background-color: pink;
  line-height: (44 / @rootSize);
}

相关文章:

  • 南昌手机网站制作百度公司网站推广怎么做
  • 做网站一年能赚多少钱今日军事新闻最新消息
  • j为什么不用java做网站百度网盘服务电话6988
  • 宝安网站建设公司百度网站收录提交入口全攻略
  • 延庆b2c网站制作价格十大引擎网址
  • 房地产网站建设联系方式外贸网站搭建
  • ​​如何测试一个API接口?从原理到实践详解
  • 【Dubbo】分布式服务框架的卓越之选
  • MySQL报Lock wait timeout exceeded; try restarting transaction
  • stm32+esp8266+机智云手机app
  • 《深度解析LightGBM与MySQL数据集成:高效机器学习的新范式》
  • 【Java设计模式】第5章 工厂方法模式讲解
  • 通过Aop实现限制修改删除指定账号的数据
  • QML Loader:动态加载与控件创建
  • git命令
  • LLM面试题十
  • EmotiVoice 易魔声AI语音下载安装使用教程​(附安装包)
  • 移动端、PC端(Web) 和 桌面端(客户端应用)AI驱动测试实现方案
  • Spring-MVC
  • 从C语言到Go语言:新手快速入门指南
  • 解析 LILIkoi 光纤力传感器:FBG 原理铸就耐高温抗干扰优势
  • python-Leetcode 65.搜索旋转排序数组
  • 知识表示方法之六:过程表示法(Procedural Representation)
  • 【AI】prompt engineering
  • 组播网络构建:IGMP、PIM 原理及应用实践
  • Java Arrays工具类详解