less详解

简介: 拥抱前端开发的未来,掌握Less的魔力!在我们精心撰写的博客文章中,你将发现如何通过学习Less这一强大的CSS预处理器,以更高效、更可维护的方式编写样式代码。无论你是初学者还是经验丰富的开发者,我们的指南将带你逐步了解Less的核心概念和语法。通过实际示例和深入解析,你将从中汲取灵感,提升你的前端技能。加入我们的学习社区,与同行分享知识,一同探索创新、时尚而富有表现力的前端设计世界! 

 image.gif编辑

拥抱前端开发的未来,掌握Less的魔力!在我们精心撰写的博客文章中,你将发现如何通过学习Less这一强大的CSS预处理器,以更高效、更可维护的方式编写样式代码。无论你是初学者还是经验丰富的开发者,我们的指南将带你逐步了解Less的核心概念和语法。通过实际示例和深入解析,你将从中汲取灵感,提升你的前端技能。加入我们的学习社区,与同行分享知识,一同探索创新、时尚而富有表现力的前端设计世界!

简介

官网

https://less.bootcss.com/

搭建

安装node.js

安装Less

注意:安装不了直接win+x在管理员的终端窗口安装

cnpm install -g less

image.gif

lessc -v

image.gif

       

编译

命令行编译

终端命令:

lessc style.less style.css

image.gif


直接使用【在服务器运行情况下】

在项目中引入Less文件与解析Less的js文件

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

image.gif

下载服务器:

cnpm install -g http-server

image.gif

运行服务器:

http-server

image.gif

基础

作用域、注释、导入

注释

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

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

image.gif


 

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

image.gif


导入

使用sass的@import规则并不需要指明被导入文件的全名。你可以省略.less或.less文件后缀

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

image.gif


作用域

Less 中的作用域与 CSS 中的作用域非常类似。首先在本地查找变量和混合,如果找不到,则从“父”级作用域继承

与 CSS 自定义属性一样,混合(mixin)和变量的定义不必在引用之前事先定义

嵌套

基础使用

#header {
color: black;
.logo {
width: 300px;
}
}

image.gif

:hover伪选择器使用

&表示当前选择器的父级

.box{
width: 100px;
height: 100px;
background-color: gray;
&:hover{
background-color: red;
}
}

image.gif

         

变量

声明变量

@width: 1200px;
.container {
width: @width;
}

image.gif


变量可以先使用在声明

.container {
width: @width;
}
@width: 1200px;

image.gif


选择器使用变量

@my-selector: banner;
.@{my-selector} {
font-weight: bold;
}

image.gif


url地址使用变量

@images: "../img";
body {
color: #444;
background: url("@{images}/hello.png");
}

image.gif


属性当作变量

使用$prop语法可以很容易地将属性当作变量来处理
.widget {
color: #efefef;
background-color: $color;
margin: 15px;
}

image.gif

混合

简介

将一个类的属性用于另一个类

.p1 {
color: red;
}
.p2 {
background: #64d9c0;
.p1();
}
.p3 {
background: #DAA520;
.p1;
}

image.gif


混合添加括号

如果你想创建一个混合,但是你不希望这个混合出现在你的CSS中,在混合定义后面加圆括号

/**不会有效果**/
.my-other-mixin() {
background: white;
}
.class {
.my-other-mixin();
}

image.gif


混合中使用!important

在混合调用后使用!important关键字将它继承的所有属性标记为!important

.foo (@bg: #f5f5f5; @color: #900) {
background: @bg;
color: @color;
}
.important {
.foo() !important;
}

image.gif

带参数的混合

混合也可以接受参数,这些参数是混合时传递给选择器块的变量

.border-radius(@radius,@color:red) {
border-radius: @radius;
color: @color
}
#header {
.border-radius(4px,blue);
}
.button {
.border-radius(6px);
}

image.gif

运算

加法

@fontSize: 10px;
.myclass {
font-size: @fontSize + 10;
color: green;
}

image.gif

减法

@fontSize: 10px;
.myclass {
font-size: @fontSize - 5;
color: green;
}

image.gif

乘法

@fontSize: 10px;
.myclass {
font-size: @fontSize * 2;
color: green;
}

image.gif


除法【添加括号】

@fontSize: 10px;
.myclass {
font-size: (@fontSize / 2);
color: green;
}

image.gif

进阶

转义

简介

允许你使用任意字符串作为属性或变量值

任何 ~"anything" 形式的内容都将按原样输出


示例

@min768: ~"(min-width: 768px)";
.element {
@media @min768 {
font-size: 1.2rem;
}
}

image.gif

函数

percentage 将数值转换为百分比

@width: 0.5;
.class {
width: percentage(@width); // returns `50%`
}

image.gif


ceil 向上取整

.nav{
width: ceil(199.5); // 200
}

image.gif


floor 向下取整

.nav{
width: ceil(199.5); // 199
}

image.gif

       

 

相关文章
|
2月前
|
SpringCloudAlibaba Cloud Native Docker
SpringCloudAlibaba:4.1云原生网关higress的搭建
SpringCloudAlibaba:4.1云原生网关higress的搭建
67 1
|
2月前
|
SpringCloudAlibaba Dubbo 应用服务中间件
SpringCloudAlibaba:3.1dubbo
SpringCloudAlibaba:3.1dubbo
74 2
|
存储 监控 算法
ClickHouse源码分析-压缩算法大揭秘
ClickHouse在近年来增加了很多压缩算法,最主要的改进还是为了更好的适应时序场景,提高压缩率,节省存储空间。本期就给大家带来ClickHouse的压缩算法介绍。
4945 0
ClickHouse源码分析-压缩算法大揭秘
|
机器学习/深度学习 Web App开发 监控
SLS机器学习最佳实战:根因分析(一)
通过算法,快速定位到某个宏观异常在微观粒度的具体表现形式,能够更好的帮助运营同学和运维同学分析大量异常,降低问题定位的时间。
12549 0
|
存储 Java Go
巧用 Go Map 特性对数组或切片去重
本文介绍了如何利用 Go 的复合数据类型 Map 的特性对数组或切片进行去重。值得注意的一个地方是,在使用 Map 构建 Set 时,Value 的数据类型指定为 struct{},原因是后面在添加键值对的时候,指定的 Value 为空结构体 strcut{}{},空结构体不占用内存空间。
723 1
巧用 Go Map 特性对数组或切片去重
|
JSON Go 数据格式
Go 结构体与 JSON 之间的转换
本文介绍了 Go 语言里,JSON 与结构体之间的转换。在结构体转 JSON 时,我们可以通过给字段打标签,指定转换后的 key 命名,需要注意的是,如果结构体的字段为非导出字段或字段的 JSON 标签值为 -,在转换 JSON 时,将会被忽略。反之 JSON 解析结构体时也是一样的。
303 1
Go 结构体与 JSON 之间的转换
|
安全 调度 数据安全/隐私保护
Python 列表是否线程安全?
Python中的列表不是线程安全的,在多线程环境下,对列表的操作可能会导致数据冲突或错误。但是,并非所有列表操作都是线程不安全的。如果操作是原子的,也就是说不能被线程调度机制打断,那么就没有问题。比如L.append(x)和L.pop()就是原子操作,所以是thread安全。如果操作不是原子的,或者涉及修改多个列表元素,那么就需要使用锁或者其他同步机制来保证线程安全。例如,L[i] = L[j] 和 L.append(L[- 1]) 不是原子操作,因此它们可能会导致冲突。可以使用 dis 模块来检查操作是否是原子操作。
503 0
|
机器学习/深度学习 算法 数据挖掘
# 【深度学习】:《PyTorch入门到项目实战》第三天:简洁代码实现线性神经网络(附代码)
在上一节我们学习了如何使用pytorch从零实现一个线性回归模型。包括生成数据集,构建损失函数,==<corlor>梯度下降==优化求解参数等。和很多其他机器学习框架一样,pytorch中也包含了许多可以自动实现机器学习的包。本章介绍一些如何使用`nn`简便的实现一个线性回归模型
 # 【深度学习】:《PyTorch入门到项目实战》第三天:简洁代码实现线性神经网络(附代码)
|
JSON JavaScript 前端开发
GitHub当前排名前十的热门Vue项目 ​​
GitHub当前排名前十的热门Vue项目 ​​
450 0
|
存储 SQL 分布式计算
【Parquet】Spark读取Parquet问题详解……
【Parquet】Spark读取Parquet问题详解……
712 0
【Parquet】Spark读取Parquet问题详解……