前端三大Css处理器之Less

Less是Css预处理器之一,分别有Sass、Less、Stylus这三个。
Lesshttps://lesscss.org/ Less是用JavaScript编写的,事实上,Less是一个JavaScript库,他通过混合、变量、嵌套和规则设置循环扩展了原生普通Css的功能。Less的少数缺点之一是它不支持函数。

Less的语法与Scss十分相似,只是在声明变量时,Less使用@而不是$sign。
Sasshttps://www.sass.hk/guide/Sass让人们受益的一个重要特性就是它为css引入了变量。你可以把反复使用的css属性值 定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值。
Stylushttps://www.stylus-lang.cn/ Stylus由Node.JS编写,与JS堆栈完美匹配。Stylus神兽Sass的逻辑能力和Less的简单性的影响。与Sass或Less版本相比,Stylus的一个优点就是它具有极其强大的内置功能,并且能够处理繁重的计算。

Less笔记:

JavaScript代码:

javascript 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport"
    content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0,minimal-ui:ios">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>学无止境,永远对学习保持一种敬畏的态度!</title>
  <link rel="stylesheet" type="text/css" href="./css/01.css">
</head>

<body>
  <div id="wrap">
    <div class="inner"></div>
    <div class="inner2"></div>
  </div>
</body>

</html>

Less样式代码:

css 复制代码
// less变量
@c-pink: pink;
@mgn: margin;
@wrap: #wrap;

// 混合
.juzhong(@width: 10px, @height: 10px, @color: skyblue){
  width: @width;
  height: @height;
  background: @color;
  // less中的嵌套规则
  // 注意点:一定要加&,否则会编译成父子关系,使用&:表示平级
  &:hover{
    background: @c-pink;
  }
}

* {
  padding: 0;
  @{mgn}: 0;
}
/* 这是我想给用户看的注释 */
// 这是给程序员看的注释
@{wrap} {
  width: 500px;
  height: 500px;
  margin: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 1px solid skyblue;
  .inner {
    .juzhong(100px , 100px, red);
  }
  .inner2 {
    .juzhong(@color: gray);
  }
}

// less中唯一有一点逻辑的地方:变量的延迟加载(看作用域)
@var: 0;
.wzh-1{
  @var: 1;
  .wzh-2 {
    @var: 2;
    three: @var;  // 3
    @var: 3;
  }
  one: @var;  // 1
}
// less中的嵌套规则


// 注释



// 变量  @开头
// @c-pink: pink;  color: @c-pink;
// @wrap: #wrap;   @{wrap} {}
// @margin: margin;  @{margin}: auto;



// 场景:同一个大盒子下两个一模一样的小盒子,小盒子代码重复,如何复用?  混合即可高效解决
// less普通混合 :  juzhong()
// 混合的样式会在css文件内显示



// less不带输出混合: .juzhong()
// 混合的样式只在less文件内显示(给混合名字后面加上小括号即可,调用时也要加小括号)



// 带参数并且带默认值的混合 .juzhong(x, y)  俗称mixin
// 只需要在 .juzhong(@width, @height, @color)
// 1、调用时需要接收形参
// 2、并且需要默认值



// 命名参数混合
// 1、调用 .juzhong()函数时,它需要传三个参数,如果你只想要传参一个参数的话,就需要给参数命名;
// 2、命名参数这样使用: .juzhong(@color: black)  这样既可,如果不给参数命名,它会将颜色的值赋值到width宽度上去;



// arguments变量   实参列表  具有length属性的对象叫做伪数组
// .juzhong(@w, @line, @color) { border: @arguments}



// less计算: 加减乘除   计算时只需要一方带单位即可
.wzh-1{ width: (100 + 100px)}



// 避免编译:像我们css中计算的一个方法calc,
// 因为它是浏览器自带的方法,它是会被自动识别并编译的,
// 所以我们不需要再让less去编译它,我们就可以使用 ~'' 将calc计算包起来,就会避免less编译这行计算样式
.lv{
  margin: 0;
  padding: ~'calc(100 + 100px)';
}
相关推荐
不在逃避q5 分钟前
Trae/Vs Code/Cursor命令行无法跑npm命令
前端·arcgis·npm
夏殇之殁19 分钟前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
The Chosen One98524 分钟前
高进度算法模板速记(待完善)
java·前端·算法
陈随易29 分钟前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员
新中地GIS开发老师2 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
用户059540174462 小时前
大模型对话记忆持久化踩坑实录:用 Playwright 自动化测了 300 次,终于揪出会话丢失的真凶
前端·css
丙氨酸長鏈2 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen3 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
IT_陈寒3 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端
梅孔立4 小时前
两种免费的翻译API调用方式详解 - Edge官方API与个人缓存服务
前端·缓存·edge