css 预处理之 less

Less 中文网

编译 less

可使用 Koala 将 less 文件编译成 css 文件,或者 VSCode 安装 Easy LESS 插件

注释

  1. 通过 /* 内容 */ 注释(编译后注释会保存在 css 文件中)
  2. 通过 // 内容 注释(编译后注释不会保存在 css 文件中)

变量

通过 @ 符号声明变量

@size: 12px;

div {
  font-size: @size;
}

混合

  1. 基本用法
.sty1 {
  width: 100px;
}
.sty2 {
  /* 继承 .sty1 中的所有样式 */
  .sty1;
  height: 100px;
}
  1. 可传参数
.border(@border_wid) {
  border: @border_wid solid #eeeeee;
}
.div {
  .border(1px);
}
  1. 默认带值
.border(@border_wid:2px) {
  border: @border_wid solid #eeeeee;
}
.div {
  .border();
}
.div2 {
  .border(1px);
}

匹配模式

/* 箭头向上的三角形 */
.triangle (top, @w:5px, @c:#ccc) {
  border-width: @w;
  border-color: transparent transparent @c transparent;
  border-style: dashed dashed solid dashed;
}
/* 向下 */
.triangle (bottom, @w:5px, @c:#ccc) {
  border-width: @w;
  border-color: @c transparent transparent transparent;
  border-style: dashed dashed solid dashed;
}
/* 向左 */
.triangle (left, @w:5px, @c:#ccc) {
  border-width: @w;
  border-color: transparent @c transparent transparent;
  border-style: dashed dashed solid dashed;
}
/* 向右 */
.triangle (right, @w:5px, @c:#ccc) {
  border-width: @w;
  border-color: transparent transparent transparent @c;
  border-style: dashed dashed solid dashed;
}
/* 默认样式(不管是否匹配到上面的样式,这里的样式都会编译进去) */
.triangle (@_, @w:5px, @c:#ccc) {
  width: 0px;
  height: 0px;
  overflow: hidden;
}

.div {
  .triangle(bottom, @w: 10px, @c: #333);
}

运算

任何数字,颜色或变量都可以参加运算,只要有一个带单位即可
注: 运算符前后要加空格

@test_01: 300px;

.box_02 {
  width: @test_01 + 20;
  height: (@test_01 - 200) * 5;
  background: #ccc - 10;
}

嵌套规则

<ul class="list">
  <li><a></a><span></span></li>
</ul>
.list {
  li {
    // ...
  }
  a {
    // a 的样式也可写在 li 里面,但尽量减少嵌套,嵌套越多,匹配次数越多,影响加载
    // ...
    &:hover {
      // & 代表上一层选择器
      // ...
    }
  }
  span {
    // ...
  }
}

@arguments 变量

@arguments 代表所有传递进来的参数

.border (@w:1px, @s: solid, @c: red) {
  border: @arguments;
}

.test_border {
  .border(20px);
}

避免编译

用引号(单双引号都可以)包住并在前面加上 ~ 即可防止被编译

.test1 {
  width: ~'calc(100% -30px)';
}

!important

使用 !important 后,.main() 内所有样式后面都会加上 !important

.main {
  width: 10px;
  height: 10px;
}

.test2 {
  .main() !important;
}

附录

  • 使用 & 拼接类名
<div class="title">
  <div class="title_nav"></div>
</div>
.title {
  &_nav {
    // &_nav 相当于 .title_nav
    // ...
  }
}
  • 导入 less 文件:@import “less”;
  • 导入 css:@import “body.css”;
  • 导入并编译 css:@import (less) “body.css”;
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shifeng~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值