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

       

 

相关文章
|
7月前
|
算法 编译器 数据库
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
650 0
|
2月前
|
消息中间件 存储 弹性计算
云消息队列 RabbitMQ 版方案评测
本文评估了阿里云《高弹性,低成本,云消息队列 RabbitMQ 实践》方案,从实践原理理解、部署体验、方案优势展现及业务场景匹配四个方面进行了深入分析。文中指出,该方案在解决消息积压、提高系统稳定性、支持弹性伸缩等方面表现优异,但也提出了在组件功能解释、实战案例提供等方面的改进建议,以期帮助用户更好地理解和应用该技术解决方案。
125 0
|
5月前
|
缓存 关系型数据库 MySQL
error: Failed dependencies: mariadb-connector-c-config is obsoleted by mysql-community-server-8.0.36-1.el7.x86_64 问题解决
error: Failed dependencies: mariadb-connector-c-config is obsoleted by mysql-community-server-8.0.36-1.el7.x86_64 问题解决
278 19
|
7月前
|
SQL 关系型数据库 MySQL
qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!
|
7月前
|
编译器 C语言 C++
C/C++编译优化技巧:预编译头文件(PCH)使用方法
C/C++编译优化技巧:预编译头文件(PCH)使用方法
557 1
|
人工智能 JSON API
|
Web App开发 JavaScript
使用 SharedWorker 进行跨标签通信
sharedWorker 也是一种 worker,sharedWorker 的创建和 webWorker 的创建一样,使用 new 关键字来进行初始化(不能通过代码片段创建),不同的是可以在浏览器不同标签下(同源,后面的跨页面等均是在同源的前提下)使用同一个js url 创建sharedWorker 会复用同一个实例。
470 0
|
机器学习/深度学习 算法 数据挖掘
# 【深度学习】:《PyTorch入门到项目实战》第三天:简洁代码实现线性神经网络(附代码)
在上一节我们学习了如何使用pytorch从零实现一个线性回归模型。包括生成数据集,构建损失函数,==&lt;corlor&gt;梯度下降==优化求解参数等。和很多其他机器学习框架一样,pytorch中也包含了许多可以自动实现机器学习的包。本章介绍一些如何使用`nn`简便的实现一个线性回归模型
 # 【深度学习】:《PyTorch入门到项目实战》第三天:简洁代码实现线性神经网络(附代码)
Vant3—— 点击对应的name名称跳转到下一页对应的tab栏的name的位置
点击对应的name名称跳转到下一页对应的tab栏的name的位置
232 0
|
JavaScript 前端开发 IDE
React + TypeScript 常用类型汇总(上)
本文适合对TypeScript感兴趣的小伙伴阅读~
React + TypeScript 常用类型汇总(上)