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

       

 

相关文章
|
8月前
|
关系型数据库 数据库
数据库原子性(Atomicity)
数据库原子性(Atomicity)
561 2
|
8月前
|
算法 编译器 数据库
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
738 0
MacBook终端安装tree命令(保证好使)
MacBook终端安装tree命令(保证好使)
|
4月前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能社交媒体内容分析
使用Python实现深度学习模型:智能社交媒体内容分析
651 69
|
3月前
|
消息中间件 存储 弹性计算
云消息队列 RabbitMQ 版方案评测
本文评估了阿里云《高弹性,低成本,云消息队列 RabbitMQ 实践》方案,从实践原理理解、部署体验、方案优势展现及业务场景匹配四个方面进行了深入分析。文中指出,该方案在解决消息积压、提高系统稳定性、支持弹性伸缩等方面表现优异,但也提出了在组件功能解释、实战案例提供等方面的改进建议,以期帮助用户更好地理解和应用该技术解决方案。
196 0
|
6月前
|
缓存 关系型数据库 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 问题解决
388 19
|
7月前
|
API C++ 微服务
微服务新体验之Aspire初体验
该文指导安装Aspire项目。首先,需检查VS版本,若低于17.9.7则须更新。通过“帮助”菜单选择“检查更新”并安装。接着创建Aspire项目,然后在AspireApp1.AppHost的launchSettings.json中添加&quot;ASPIRE_ALLOW_UNSECURED_TRANSPORT&quot;: &quot;true&quot;。运行AspireApp1.AppHost项目,最后访问AspireApp1.Web以查看结果。文中代码展示了如何在AspireApp1.Web中注入并调用apiservice的API。作者为吴晓阳。
177 3
微服务新体验之Aspire初体验
|
8月前
|
SQL 关系型数据库 MySQL
qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!
|
8月前
|
编译器 C语言 C++
C/C++编译优化技巧:预编译头文件(PCH)使用方法
C/C++编译优化技巧:预编译头文件(PCH)使用方法
734 1
|
移动开发 JSON 运维
前端稳定性建设
前端稳定性建设