LESS

less是什么

less css是一种动态样式语言,属于css预处理语言的一种,它使用类似css的语法,为css赋予了动态语言的特性,如变量、继承、运算、函数等,更方便css的编写和维护

less于css,相当于jquery于JavaScript

编译工具

koala --初学者推荐 m可以去官网下载:http://koala-app.com/

Node.js库

浏览器端

less语法

less注释

1. /**/ 会被编译出来

2. // 不会被编译

                                                                          main.less
/* 我会被编译出来 */
// 我不会被编译出来复制代码

                                                                           main.css
/* 我会被编译出来 */复制代码

变量

用@声明变量

                                                                          main.less
@width: 300px;
.box {
  width: @width;
  height: @width;
  background: pink;
}
复制代码
                                                                           main.css
.box {
    width: 300px;
    height: 300px;
    background: pink;
}复制代码

混合

1. 可直接引用 class

                                                                          main.less
.border {
    border: 1px solid #ddd;
}
.box {
    width: @width;
    height: @width;
    background: pink;
    .border;
}复制代码

                                                                           main.css
.box {
  width: 300px;
  height: 300px;
  background: pink;
  border: 1px solid #ddd;
}复制代码

2. 可带参数,并且可以设置默认值

                                                                          main.less
.padding(@padding) {
  padding:@padding;
}
.margin_left(@margin_left:10px) {
  margin-left: @margin_left;
}
.border_radius(@radius:10px) {
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  border-radius: @radius;
}
.box {
  width: @width;
  height: @width;
  background: pink;
  .border;
  .padding(10px); // 无默认值时 必须指定值
  .margin_left(20px); // 指定值时 用指定的值
  .border_radius(); // 不指定值时 用默认值
}复制代码
                                                                           main.css
.box {
  width: 300px;
  height: 300px;
  background: pink;
  border: 1px solid #ddd;
  padding: 10px;
  margin-left: 20px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  border-radius: 10px;
}复制代码

匹配模式

1. @_ 全部匹配

                                                                          main.less
// 匹配模式 写各个方向的三角形
.triangle(top, @w: 10px, @c: red) {
  border-width: @w;
  border-color: transparent transparent @c transparent;
  border-style: dashed dashed solid dashed;
}
.triangle(bottom, @w: 10px, @c: red) {
  border-width: @w;
  border-color: @c transparent transparent transparent;
  border-style: solid dashed dashed dashed;
}
.triangle(left, @w: 10px, @c: red) {
  border-width: @w;
  border-color: transparent @c transparent transparent;
  border-style: dashed solid dashed dashed;
}
.triangle(right, @w: 10px, @c: red) {
  border-width: @w;
  border-color: transparent transparent transparent @c;
  border-style: dashed dashed dashed solid;
}
.triangle(@_, @w: 10px, @c: red) {
  width: 0;
  height: 0;
  overflow: hidden;
}
.triangle_example {
  .triangle(top)
}复制代码
                                                                           main.css
.triangle_example {
  border-width: 10px;
  border-color: transparent transparent #ff0000 transparent;
  border-style: dashed dashed solid dashed;
  width: 0;
  height: 0;
  overflow: hidden;
}复制代码

运算

                                                                          main.less
// 运算
@width: 300px;
.box_3 {
  width: @width - 100;
  height: @width;
  background: pink;
}复制代码
                                                                           main.css
.box_3 {
  width: 200px;
  height: 300px;
  background: pink;
}复制代码

嵌套规则

1.  对尾类的使用  - &:hover 或 &:focus  (& 代表上一级选择器)

                                                                          main.html
<ul class="list">
    <li>王俊凯</li>
    <li>王源</li>
    <li>易洋千玺</li>
</ul>复制代码
                                                                          main.less
// 嵌套规则
.list {
  background: paleturquoise;
  li {
    line-height: 45px;
    color: #333;
    list-style: none;
    &:hover {
      color: #fff;
    }
  }
}
复制代码
                                                                           main.css
.list {
  background: paleturquoise;
}
.list li {
  line-height: 45px;
  color: #333;
  list-style: none;
}
.list li:hover {
  color: #fff;
}
复制代码

@arguments变量

@arguments包含了所有传递进来的参数

如果你不想单独处理每一个参数的话就可以这样写

                                                                          main.less
.border_arg(@w: 2px, @type: solid, @c: #ddd) {
  border: @arguments;
}
.test_arg {
  .border_arg();
}复制代码
                                                                           main.css
.test_arg {
  border: 2px solid #dddddd;
}复制代码

避免编译

有时候我们需要输出一些不正确的CSS语法或者使用一些LESS不认识的专有语法

要输出这样的值我们可以在字符串前加上一个~''

                                                                               main.less
// 其实我们的本意是 要浏览器计算calc
.box_4 {
  width: calc(100% - 30px);
  height: 300px;
  background: paleturquoise;
}
.box_5 {
  width: ~'calc(100% - 30px)';
  height: 300px;
  background: palegoldenrod;
}复制代码
                                                                           main.css
.box_4 {
  width: calc(70%);
  height: 300px;
  background: paleturquoise;
}
.box_5 {
  width: calc(100% - 30px);
  height: 300px;
  background: palegoldenrod;
}复制代码

!important关键字

                                                                          main.less
.border_radius(@radius:10px) {
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  border-radius: @radius;
}
.box_6 {
  width: 300px;
  height: 300px;
  background: pink;  
  .border_radius()!important;
}
复制代码
                                                                           main.css
.box_6 {
  width: 300px;
  height: 300px;
  background: pink;
  -webkit-border-radius: 10px !important;
  -moz-border-radius: 10px !important;
  border-radius: 10px !important;
}复制代码

注:以上css均为对应less编译后的样子,html中引入的样式文件为css文件

更多

lesscss网站: lesscss.org

lesscss中文网:lesscss.cn



转载于:https://juejin.im/post/5c1a09025188251f1f32087d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值