Less基础速学 —— 嵌套、变量、注释、

news2025/1/18 17:07:53

         关于CSS的预处理有读者了解到的就有主流的这三种:less 、sass/sacc 和 stylus,那么在使用这些CSS的预处理器,有浏览器的用法和服务器端的方法,例如使用Node来通过NPM包管理工具下载安装less在服务端来跑,那么在浏览器上来跑也可以,需要借助一些工具,下面就来讲关于less在浏览器端的用法。

Less —— 浏览器用法

        Less 官网 : Less 快速入门 | Less.js 中文文档 - Less 中文网 

        Less 在浏览器端的用法文档 :Less.js 用法 | Less.js 中文文档 - Less 中文网

         需要下载这个 less.js 文件并使用script标签进行引入:下载 less.js 文件地址

        在线可以使用如下这个:

<script src="https://cdn.jsdelivr.net/npm/less@4" ></script>

        那么这个标签的需放在 style 标签的后面,一般的需要依赖某个js文件,那么就将它放置在style标签前面,但使用的 less.js 文件是对css的内容进行编译,所以对style标签获取之后对其进行内容编译。

<style type="text/less"> ... </style>
<script src="https://cdn.jsdelivr.net/npm/less@4" ></script>

        那么使用less这样的预处理有什么好处,或者有什么用,对css的编写有哪些优势?下面来看一个简单的例子吧!

原代码: 

*{
    margin: 0 auto;
    padding: 0;
}
.box{
    position: relative;
    width: 300px;
    height: 150px;
    border: 1px solid #000;
    margin: 0 auto;
}
.box .obox{
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100px;
    height: 100px;
    background: purple;
    margin: auto;
}

Less 嵌套写法:

*{
    margin: 0 auto;
    padding: 0;
}
.box{
    position: relative;
    width: 300px;
    height: 150px;
    border: 1px solid #000;
    margin: 0 auto;
    .obox{
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100px;
        height: 100px;
        background: purple;
        margin: auto;    
    }
}

        通过缩进的方式进行嵌套,使用原先的编写方式可能比较多的每次就需要进行 .box .obox .my .btn 这样来编写样式,写过比较复杂的页面的读者可能深有体会。

        下面来完善前面的这个小案例图形样式代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/less">
        *{
            margin: 0 auto;
            padding: 0;
        }
        .box{
            position: relative;
            width: 300px;
            height: 150px;
            border: 1px solid #000;
            margin: 0 auto;
            .obox{
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                width: 100px;
                height: 100px;
                background: purple;
                margin: auto;    
            }
        }
    </style>
    <script src="https://cdn.jsdelivr.net/npm/less@4" ></script>
    <!-- <script src="../less/less.min.js"></script> -->
</head>

<body>
    <div class="box">
        <div class="obox"></div>
    </div>
</body>

</html>

         style 标签中 type = "text/css"则由原生浏览器来读,而 type = "text/less" 则由 less.js 文件来编译读取,这种编译的方式是不是跟我们所想的预处理不大一样,反而是运行时编译,那么我们所希望的预编译是怎样的?就是去读CSS代码,而不是读Less代码,Less代码需要进行编译成CSS,那么在开发的时候进行编译成CSS文件,那么在用的时候不就只进行读取CSS文件而不计入less的编译时间了吗?如按原来的方式上线后应用需要对less代码进行编译成CSS代码后进行读取,现在提前在开发阶段将它预编译成CSS代码之后,上线读取不就直接读CSS代码。那么如何来进行编译呢?

        答:使用考拉编译。


Koala(考拉) —— 编译

        Koala 官网 :Koala - LESS/Sass/Compass/CoffeeScript编译工具

        下载该工具并安装,这里有的可能会因为网速或者需要加速下载的下载不了,这里提供另外一个备用地址:


        将原来style标签的代码放置到 css/01.less 文件下来进行待编译文件:

// 01.less 

*{
    margin: 0 auto;
    padding: 0;
}
.box{
    position: relative;
    width: 300px;
    height: 150px;
    border: 1px solid #000;
    margin: 0 auto;
    .obox{
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100px;
        height: 100px;
        background: purple;
        margin: auto;    
    }
}

        打开Koala编译器工具,可以通过以下方式切换为【中文】,关闭重启生效。

         然后将刚刚的css文件夹拖进去即可

        点击后弹出,点击【执行编译】即可

        刷新一下可以看到文件        在css目录下为多出这个 01.css 文件,它会将 less写法的文件编译成 css的写法,这个文件就可以让原生浏览器来直接读,可能有的读者初看觉得绕了一大圈好像还是回去了,那还不如直接写css不就好了,搞一个less转半天还得回来,可能是例子中的样式代码比较少不能更好的突出less,当在复杂的样式页面中,如果直接引入less.js文件对style标签中tpye="text/less" 的样式进行运行时编译并不能达到预编译的效果,即在打开页面的时候需要对 type="text/less" 进行预编译之后才读取,那么在开发复杂的页面当中直接用less编写之后使用koala编译器编译为CSS样式代码引入之后,打开之后就可以直接读取而不需要进行编译过程了。

         以上这个就是less在浏览器当中来使用的。


 Less 注释

less 中的注释
    以 // 开头的注释则不会被编译到css文件中,可供开发者查看
    以 /**/ 包裹的注释会被编译到css文件中

 Less 变量

使用@来声明一个变量: @purple: purple
    1. 作为普通属性值来使用:直接使用@purple
    2. 作为选择器和属性名:@{ selector的值 }的形式
    3. 作为URL:@{ url }
    4. 变量的延迟加载

下面来简单看一下它的一个使用:

1. 作为普通属性值

        先来看一下原生css的样式写法:

.a{ color: rgb(128,0,128)}
.b{ background: rgb(128,0,128) }

        那么在less文件中使用变量可以这么写:

// .less文件
// 定义变量 —— 紫色
@purple: rgb(128,0,128);

.a{ color: @purple };
.b{ background: @purple };

        将less文件待通过Koala工具编译成CSS代码就可以了,这个就是less使用@声明变量的使用了。

2. 作为属性名和选择器

@声明变量作为属性名

原生CSS:

*{
    margin: 0 auto;
    padding: 0;
}

Less写法:

// 属性名
@mg: margin;
@pdg: padding;

*{
    @{mg}: 0 auto;
    @{pdg}: 0;
}

@声明变量作为选择器

原生CSS:

#content{
    width: 100px;
    height: 100px;
    background: red;
}

Less写法:

// 选择器
@selector: content;

#@{content}{
    width: 100px;
    height: 100px;
    background: red;
}

3. 作为URL与上同理

4.变量的延迟加载

        less写法中存在的是块级作用域,那下面来看一个例子来更好的说明:

@v: 0;
.class{
@v: 1;
    .cls{
        @v: 2;
        font-weight: @v;
        @v: 3;
    }    
    font-weight: @v;
}

        来看一下上边的内容最终由Koala编译为怎样的CSS样式代码呢?@v 为0,之后进入这个 .class的块级作用域 @v 变为1,那么 font-weight: @v 中的 值为多少呢? 是0还是1,答案是1,那么它嵌套的 .cls 中 @v 为2,那么 font-weight 的值是 2?还是@v的值是后面的值为3?答案是3,这就是它变量的延迟加载,它是先将变量进行一个提前,然后再给到 font-weight 。如下来看使用Koala进行编译后的CSS代码:

.class {
  font-weight: 1;
}
.class .cls {
  font-weight: 3;
}

        从上面编写less代码来看我们已经知道了Less的一种基本嵌套规则,那么在选择器后面会有其他的像伪元素 : hover 这些,那么如何来这种嵌套规则当中编写呢?

& 的使用

原生CSS:

.a{
    color: gray;
}
.a:hover{
    color: red;
}

Less写法:

.a{
    color: gray;
    &:hover{
        color: red;
    }
}

        如果不添加&则表示:hover嵌套在.a下面,而&则表示.a,表示平级。

        那么本篇就到此,让你了解Less的一些基础内容,如声明变量,嵌套规则,以及运行时编译和预处理,使用Koala工具进行对less文件进行编译为原生CSS样式代码,那么如果感兴趣的话,可以订阅此栏目,继续学习有关Less的其他一些内容,内容具有渐进性,易学易懂。感谢大家的支持!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go渲染静态html引擎模版

写个小例子介绍一下渲染html引擎模板的使用&#xff0c;大致目录结果如下&#xff1a; templates目录下三个html内容如下: index.html <title>模板1</title><link rel"stylesheet" href"/css/index.css" /><h1 class"text&quo…

数据链路层:差错检测

1.数据链路层&#xff1a;差错检测 笔记来源&#xff1a; 湖科大教书匠&#xff1a;差错检测 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 比特差错&#xff1a;比特在传输过程中1可能变为0&#xff0c;0可能变为1 误码率BER&#xff1a;传输错误…

数据链路层:以太网/ARP协议

本文将分享数据链路层的相关知识点&#xff1a;以太网、以太网帧格式、MAC地址、MTU和ARP协议 以太网 "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容。例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等。…

Linux学习笔记 --- Linux用户和权限

一. 认知root用户 目标&#xff1a;1. 了解什么是root用户(超级管理员) 2. 掌握用户切换的相关命令 3. 掌握sudo命令 root用户&#xff08;超级管理员&#xff09; 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中&#xff0c;拥有…

STM32 UDS Bootloader开发-需求篇

文章目录 前言内存分配UDS诊断协议需求CAN ID及时间参数诊断服务Bootloader诊断服务 APP诊断服务DID刷写流程预编程主编程后编程 总结 前言 最近断断续续的在做基于STM32F103的UDS Bootloader,没有项目驱动&#xff0c;只是自己感兴趣。目前基本已经可以实现功能了&#xff0c…

关于 OpenCV 图像处理工具包 imutils 简单认知

写在前面 博文内容涉及 基本的图像处理工具包 imutils 的简单介绍以及使用Demo理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0…

2023年真无线蓝牙耳机品牌有哪些推荐?无线蓝牙耳机选购指南

今天就来给大家测评一下2023年最受用户欢迎的蓝牙耳机&#xff0c;在不断地测试耳机&#xff0c;并挖掘好的耳机出来&#xff0c;不得不说&#xff0c;蓝牙和麦克风以及音频技术的驱动的迭代更新&#xff0c;性能确实惊叹不已。 对于刚接触无线耳机的小白来说&#xff0c;选购…

【服务器】支付宝SDK接口调试

​ 文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转发自cpolar内网穿透的文章&#xff1a;Java支付宝沙箱环境支付&#…

低代码的“钱景”——专业的事交给专业的人来做

你需要知道的低代码 低代码通常是指一种可视化的开发方法&#xff0c;用较少的代码、较快的速度来交付应用程序&#xff0c;相似的概念还有“无代码”&#xff0c;也是一种开发方法&#xff0c;通常是面向非技术性员工&#xff0c;让业务人员也可以成为“技术人员”&#xff0…

首发Yolov8涨点神器:华为诺亚2023极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点

强烈推荐:博主多个数据集亲测有效,实现暴力涨点,可快速迁移到论文创新性十足,刚新鲜出炉的论文,华为诺亚共同提出!!! 1.VanillaNet 论文:https://arxiv.org/pdf/2305.12972.pdf 来自华为诺亚、悉尼大学的研究者们提出了一种极简的神经网络模型 VanillaNet,以极简主义…

表情包APP小程序制作开发功能有哪些?

表情包小程序在实际的开发过程中所具备的功能都是至关重要的&#xff0c;功能完善好操作才能更受用户青睐。表情包小程序制作开发功能包括但不仅限于以下几点&#xff1a; 1、热门表情包推荐。表情包制作小程序为用户推荐最热门的表情包&#xff0c;让用户可以紧跟当下流…

串口屏-迪文10寸T5串口屏简单上手

先看效果 调试所需软件 DGUS上位机 下载链接 调试所需硬件 SD卡一张 读卡器一个 USB转TTL一个 DGUS上位机调试 点击新建工程(会让你选尺寸) 分别生成0号字库和DWIN ICL文件 0号字库文件在你软件的安装目录可以找到 ICL文件输出到你能找到的位置 等会要用 添加背景图片 …

异常检测论文1

本文仅作为个人阅读文献&#xff0c;做笔记记录。 <> \usepackage[dvipsnames]{xcolor} 一、摘要部分&#xff1a; 我们发现&#xff0c;现有的数据集偏向于局部结构异常&#xff0c;如划痕、凹痕或污染。特别是&#xff0c;它们缺乏违反逻辑约束形式的异常&#xff0…

【redis】Stream、String 超详细介绍

文章目录 一、Stream1.1 写入数据XADD条目 ID 的格式 1.2 获取数据XRANGE 和 XREVRANGEXREAD 监听新条目非阻塞形式阻塞形式 1.3 消费者组XGROUP 创建消费者组XREADGROUP 通过消费者组消费XACK 确认消息消费者组示例 1.4 XPENDING 和 XCLAIM 认领 其他消费者 的待处理消息XPEND…

(2022,MaskedGAN)掩蔽的生成对抗网络是数据高效生成学习者

Masked Generative Adversarial Networks are Data-Efficient Generation Learners 公众号&#xff1a;EDPJ 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1 任务定义 3.2 掩蔽的生成对抗网络 3.3 理论见解 4. 实验 4.1 在 CIFAR-10、CIFAR-100 和 ImageNet 上使用…

算法基础学习笔记——④前缀和\差分\双指针\位运算

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨前缀和 ✨一维前缀和 &#x1f353;一维前缀和模板&#xff1a; ✨二维前缀和 &#x1f353;二位前缀和模板&#xff1a; 前言&#xff1a;算法学习笔记记录日常分享&#xff0c;需要的看哈O(∩_∩)O&a…

Python二级编程:分词去重

一、原题 参考编程模板&#xff0c;完善代码&#xff0c;实现以下功能。‪‪‪‪‪‫‫‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪‪‪‪‪‫ 利用 jieba 库实现中文分词。对分词后的列表进行去重处理&#xff0c;然后将分词结果中字符数大于等于 3 的词语&…

大话手游原始服务端搭建教程Centos

大话手游原始服务端搭建教程Centos 大家好&#xff0c;我是艾西&#xff0c;今天给大家分享一款回合制的ARPG大话手游搭建教程。游戏场景、精美的画面以及多元的人物做的非常棒。在游戏中可以穿越神话世界&#xff0c;同时也可以结交好友&#xff0c;加入团队&#xff0c;共同…

按键的单击、双击、连续按、短按和长按实现思路

概念区分 看到好多教程说了这些概念&#xff0c;有的说单击就是短按&#xff0c;连续按就是长按等等。 其实&#xff0c;仔细想想&#xff0c;这几个概念是有一些区别的。 假如一个按键&#xff0c;没按下时是高电平&#xff0c;按下时是低电平&#xff0c;以此来理解这些概念。…

JVM—Class类文件结构详解

Class类文件的结构 要了解Class文件的结构首先得了解Class文件所采用的数据类型&#xff1a; Class文件格式采用一种类似C语言结构体的伪结构来存储数据&#xff0c;这种伪结构只有两种数据结构&#xff0c;即无符号数和表&#xff0c;解析Class文件全是以这两个数据结构为基础…