前端工程化之:CSS工程化+Less

一、什么是Less?

Less官网

Less中文网

 Less 是一种更加简洁的样式代码,它非常像 CSS ,但又不太一样,它让编写样式变得更容易。 Less 代码虽好,但它无法被浏览器识别,因此需要一个工具将其转换为纯正的 CSS 代码。

由于 node 环境具有读写文件的能力,于是在 node 环境中可以轻松的完成文件的转换。 npm 上有一个包叫做 less ,它运行在 node 环境中,通过它可以完成对 Less 代码的转换。

下面是 CSS 代码和 Less 代码的对比,它们都表达了一样的含义。

 

可以看出, node 环境在前端工程化中,充当了一个辅助的角色,它并不直接运行前端代码,而是让我们编写前端代码更加舒适便利。
转换代码,称之为编译 (compile) ,转换代码的工具,称之为编译器 (compiler)

二、安装Less

1、使用 npm 下载 less 

 less 包提供了一个 cli 工具 lessc ,有两种方案使用它。

方案一:全局安装Less

这种方案可以在任何终端目录使用 lessc 命令,但不利于版本控制。

方案二:本地安装less

npm i -D less

这种方案会把 less 安装到工程目录的 node_modules 中,你无法全局使用 lessc 命令,但可以在当前工程目录中使用 npx lessc 运行该命令。

npx lessc -v // 查看lessc版本

 npx  npm 提供的一个小工具,它可以运行当前项目中安装到 node_modules  cli 命令。

如果配置 package.json 脚本,无须使用 npx

 如果可以,应该尽量使用本地安装,而非全局安装!

2、使用 lessc 命令,对编写的 less 文件进行编译

// 将index.less编译成为index.css
lessc index.less index.css

3、配置 package.json 脚本,使用 npm 命令将 less 文件转换为 css 文件

在终端运行命令会生成一个 index.css 文件。

// package.json
"scripts": {
    "c": "lessc index.less index.css"
 },

// 终端
npm run c

4、新建一个页面,引用编译结果 index.css 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="./index.css" />
  </head>
  <body>
    <div class="list">123</div>
  </body>
</html>

三、 Less 基本语法

1.变量

// less写法
@width: 10px;
@height: @width + 10px;
@gray:#ccc

#header {
  width: @width;
  height: @height;
  color: @gray;
}

// 编译后
#header {
  width: 10px;
  height: 20px;
  color: #ccc;
}

2.混合(Mixins

混合(Mixin)是一种将一组属性从一个规则集包含(或混入)到另一个规则集的方法。假设我们定义了一个类(class)如下: 

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

如果我们希望在其它规则集中使用这些属性呢?没问题,我们只需像下面这样输入所需属性的类(class)名称即可,如下所示:

#menu a {
  color: #111;
  .bordered();
}

.post a {
  color: red;
  .bordered();
}

 .bordered 类所包含的属性就将同时出现在 #menu a  .post a 中了。(注意,你也可以使用 #ids 作为 mixin 使用。)

3.嵌套

 Less 提供了使用嵌套(nesting)代替层叠或与层叠结合使用的能力。

Less 书写的代码更加简洁,并且模仿了 HTML 的组织结构。

// css代码
#header {
  color: black;
}
#header .navigation {
  font-size: 12px;
}
#header .logo {
  width: 300px;
}

// Less代码
#header {
  color: black;
  .navigation {
    font-size: 12px;
  }
  .logo {
    width: 300px;
  }
}

你还可以使用此方法将伪选择器(pseudo-selectors)与混合(mixins)一同使用。下面是一个经典的 clearfix 技巧,重写为一个混合(mixin) (&表示当前选择器的父级): 

.clearfix {
  display: block;
  zoom: 1;

  &::after {
    content: " ";
    display: block;
    font-size: 0;
    height: 0;
    clear: both;
    visibility: hidden;
  }
}

 4.注释

块注释和行注释都可以使用: 

行注释只存在于 less 代码中,不会被编译到 css 中。

块注释是普通的 css 注释,会生成到编译结果中。

/* 一个块注释
 * style comment! */
@var: red;

// 这一行被注释掉了!
@var: white;

 5.导入

 “导入”的工作方式和你预期的一样。你可以导入一个 .less 文件,此文件中的所有变量就可以全部使用了。如果导入的文件是 .less 扩展名,则可以将扩展名省略掉:

@import "library"; // library.less
@import "typo.css";

以上就是 less 的基本用法,更多用法请关注官网~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/351204.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据就业方向-(工作)ETL开发

上一篇文章&#xff1a; 大数据 - 大数据入门第一篇 | 关于大数据你了解多少&#xff1f;-CSDN博客 目录 &#x1f436;1.ETL概念 &#x1f436;2. ETL的用处 &#x1f436;3.ETL实现方式 &#x1f436;4. ETL体系结构 &#x1f436;5. 什么是ETL技术&#xff1f; &…

项目风采展示【TRDa】

桌面功能介绍&#xff1a; 1&#xff1a;支持本地音乐、三方音乐控制播放展示功能&#xff1b; 2&#xff1a;支持陀螺仪 3&#xff1a;支持蓝牙列表显示。

算法训练营Day60(单调栈)

84.柱状图的最大矩形 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; 注意首尾加0的细节就可 class Solution {public int largestRectangleArea(int[] heights) {Deque<Integer> stack new LinkedList<>();int[] newHeight new int[heights.…

EasyCode使用指南—MybatisPlus模板

目录 1、下载EasyCode插件2、配置EasyCode2.1、配置作者名称2.2、配置代码内容生成模板&#xff08;模板内容见文末&#xff09;2.3、连接数据库2.4、使用代码内容生成模板 模板内容&#xff1a;controller.java.vmdto.java.vmmapper.java.vmmapper.xml.vmpojo.java.vmservice.…

ES的一些名称和概念总结

概念 先看看ElasticSearch的整体架构&#xff1a; 一个 ES Index 在集群模式下&#xff0c;有多个 Node &#xff08;节点&#xff09;组成。每个节点就是 ES 的Instance (实例)。每个节点上会有多个 shard &#xff08;分片&#xff09;&#xff0c; P1 P2 是主分片, R1 R2…

Nginx 主动检查 被动检查

被动检查 proxy_next_upstream http {upstrean httpget {//max_fail5,失败5词&#xff0c;直接下线 down&#xff0c;//fail_timeout10s, 10s之后 重新上线 up//fail_timeout10s, max_fail5,5次失败在10s内&#xff0c;下线&#xff0c;server IP:80 max_fails5 fail_time…

DDOS攻击有哪几种类型

DDOS攻击“分布式拒绝服务”是目前网站服务器所常见的恶意攻击&#xff0c;其原理是通过控制大量肉鸡(虚假流量)访问网站服务器消耗带宽、内存等资源&#xff0c;其目的是使得网站服务器无法正常的访问&#xff0c;其后果是直接导致企业业务受损&#xff0c;数据丢失&#xff0…

墨水屏会议预约门牌,免布线方案会议室新选择!

墨水屏会议预约门牌是一种新型的会议室管理设备&#xff0c;它采用墨水屏技术&#xff0c;可实时显示会议信息、预约状态等&#xff0c;为会议室的管理和使用带来了极大的便利。与传统布线门牌相比&#xff0c;墨水屏会议预约门牌具有许多优点&#xff0c;如长寿命、低功耗、维…

万物简单AIoT 端云一体实战案例学习 之 空气质量检测系统

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 环境污染、空气污染是人类一直所关心并且讨论的永恒话题,人们对优质的环境和健康的身体非常向往。因此,如果有一种可以检测周围环境的空气质量的设备并且环境数据…

Cybellum—信息安全测试工具

产品概述 由于软件和数据在汽车上的使用越来越多&#xff0c;汽车越来越“智能化”&#xff0c;汽车行业面临着重大的信息安全挑战。2021年8月&#xff0c;ISO/SAE 21434正式发布&#xff0c;标准中对汽车的信息安全提出了规范化的要求&#xff0c;汽车信息安全不容忽视。 Cyb…

最新详细eclipse下载、安装、汉化教程

一、下载eclipse安装包 首先进入 eclipse官网 如下&#xff1a; 这里面有很多版本&#xff1b;我们小白一般选择第二个&#xff0c;向下滑动&#xff1b; 点击符合自己系统的版本。 这里我们切换镜像下载&#xff0c;一般选择离你最近的地址下载。 我建议选择大连东软信息学…

燃烧的指针(二)

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;c语言从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于c语言的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x…

YOLOv8改进 | Conv篇 | 结合Dual思想利用HetConv创新一种全新轻量化结构CSPHet(参数量下降70W)

一、本文介绍 本文给大家带来的改进机制是我结合Dual的思想利用HetConv提出一种全新的结构CSPHet,我们将其用于替换我们的C2f结构,可以将参数降低越75W,GFLOPs降低至6.6GFLOPs,同时本文结构为我独家创新,全网无第二份,非常适合用于发表论文,该结构非常灵活,利用Dual卷…

pip 安装出现报错 SSLError(SSLError(“bad handshake

即使设置了清华源&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip 安装包不能配置清华源&#xff0c;出现报错: Retrying (Retry(total2, connectNone, readNone, redirectNone, statusNone)) after connection broken by ‘SSLE…

【DDD】学习笔记-控制软件复杂度的原则

虽然说认识到软件系统的复杂本性&#xff0c;并不足以让我们应对其复杂&#xff0c;并寻找到简化系统的解决之道&#xff1b;然而&#xff0c;如果我们连导致软件复杂度的本源都茫然不知&#xff0c;又怎么谈得上控制复杂呢&#xff1f;既然我们认为导致软件系统变得复杂的成因…

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models导读

通过生成一系列中间推理步骤&#xff08;即“思维链”&#xff09;显著提高大型语言模型进行复杂推理的能力 这篇论文探讨了如何通过生成一系列中间推理步骤&#xff08;即“思维链”&#xff09;显著提高大型语言模型进行复杂推理的能力。研究人员使用一种简单的方法——思维…

图算法 - 最短路径算法 (dijkstra) 迪克斯特拉算法

解决问题: 图中某个顶点到某一个顶点的最短路径 适用场景: 查找带权图的最短路径 代码设计: 首先定义一张图(邻接矩阵,二维数组方式实现) 生成一张图 迪克斯特拉算法实现 采用贪婪的方式,每次获取最短的一条路径,作为下次遍历的起点 使用visited 记录被访问过的节点避免…

水文模型SWMM与LisFlood耦合(pdf文档、软件见资源)

总技术路线图 INP生成图解 文献&#xff1a;面向服务的Web-SWMM构建研究 regardingINP为ArcGIS Pro项目 1.SWMM模型数据准备与参数设置 1.子汇水区 文件位于&#xff1a;beforeGenerateINP/generateSub.py&#xff08;一级划分&#xff09; 问题&#xff1a; 水文分析阈值划…

C#,数据检索算法之跳跃搜索(Jump Search)的源代码

数据检索算法是指从数据集合&#xff08;数组、表、哈希表等&#xff09;中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文提供跳跃搜索的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algorithm { public static class ArraySe…

Qt编写手机端视频播放器/推流工具/Onvif工具

一、视频播放器 同时支持多种解码内核&#xff0c;包括qmedia内核&#xff08;Qt4/Qt5/Qt6&#xff09;、ffmpeg内核&#xff08;ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5/ffmpeg6&#xff09;、vlc内核&#xff08;vlc2/vlc3&#xff09;、mpv内核&#xff08;mpv1/mp2&#xff09;、…