美文网首页
Less 学习笔记

Less 学习笔记

作者: 等酒香醇V | 来源:发表于2018-01-03 17:24 被阅读0次

1. 介绍

Less是一直CSS的预编译语言,是CSS的扩展。使用Less我们也可以对css进行编程,可以定义变量、判断等。本文只要学习自W3Cschool

2. 安装

使用nodejs来进行安装

//安装命令
npm install -g less
//测试是否安装成功
lessc -v

在vue项目中安装npm install less less-loader --save

3. Less编译

less使用命令lessc style.less style.css来进行编译

4. Less语法规则

4.1 变量

LESS允许使用 @ 符号定义变量。 变量分配使用冒号(:)完成。

@color1: #ca428b;
.div1{
  background-color : @color1;
}
.div2{
  background-color : @color1;
}

编译后变成

.div1 {
  background-color: #ca428b;
}
.div2 {
  background-color: #ca428b;
}

4.2 注释

less注释分块注释和单行注释,块注释显示在css文件中,单行注释不显示。

/* 
块注释
*/

//单行注释

4.3 混合

混合类似于编程语言中的函数。 Mixins是一组CSS属性,允许您将一个类的属性用于另一个类,并且包含类名作为其属性。 在LESS中,可以使用类或id选择器以与CSS样式相同的方式声明mixin。 它可以存储多个值,并且可以在必要时在代码中重复使用。

  • 基础使用
// less
@width: 100px;
@height: 50px;
//输出mixin
.subcontent {
    height: @height;
}

.content {
    width: @width;
    .subcontent;
}

输出的css


.subcontent {
  height: 50px;
}
.content {
  width: 100px;
  height: 50px;
}
  • 加上()后,将不输出mixin。包含选择器的混合如下:
@width: 100px;
@height: 50px;
//输出mixin
.subcontent {
    height: @height;
}

//加上()后,在css中将不输出,同时
.a() {
  &:hover {
    background: #FFC0CB;
  }
}

.content {
    width: @width;
    .subcontent;
    .a;
}

输出css

.subcontent {
  height: 50px;
}
.content {
  width: 100px;
  height: 50px;
}
.content:hover {
  background: #FFC0CB;
}
  • mixin命名空间。命名空间用于在通用名称下对mixin进行分组。 使用命名空间可以避免名称冲突,并从外部封装mixin组。
#outer() {
  background:yellow;
  .inner {
    color: red;
  }
}
p {
  #outer > .inner;
}

css

p {
  color: red;
}
  • LESS 保护的命名空间,当guard应用于命名空间时,只有在guard条件返回true时才使用由命名空间定义的mixin。 命名空间防护类似于mixins上的guard。
@color: blue;
#namespace when (@color = blue) {
  .mixin() {
   color: red;
  }
}
p{
 #namespace .mixin();
}

css

p {
  color: red;
}
  • 可带参数的混合
//定义的@fontSize: 10px是默认值,在混合时可以进行重新赋值覆盖。
.mixin(@color: black; @fontSize: 10px) {
  color: @color;
  font-size: @fontSize;
}
.class1 {
  .mixin(@fontSize: 20px; @color: #F5A9D0);
}
.class2 {
  .mixin(#F79F81; @fontSize: 20px);
}
.class3 {
  .mixin(#F79F81);
}
//使用@arguments取出全部的参数
.box-shadow(@x: 0; @y: 0; @height: 3px; @width: 3px) {
  -webkit-box-shadow: @arguments;  //输出-webkit-box-shadow: 2px 2px 3px 3px;
}
.myclass {
  .box-shadow(2px; 2px);
}

//使用... 提供可变数量的参数
.mixin(...) {        // it matches arguments from 0-n
.mixin() {           // it matches exactly 0 arguments
.mixin(@x: 1) {      // it matches arguments from 0-1
.mixin(@x: 1; ...) { // it matches arguments from 0-n

//模糊匹配
.mixin(dark; @color) {
  color: darken(@color, 15%);
}
.mixin(light; @color) {
  color: lighten(@color, 15%);
}

@color-new: dark;

.line {
  .mixin(@color-new; #FF0000);
}

4.4 mixins函数

Mixins函数和混合的工作方式非常相似。mixins可以嵌套,可以接受参数和返回值。

  • mixin的作用域:由变量和混合组成的混合可以在调用者的作用域中使用,并且是可见的
.mixin() {
  @bgcolor: #C0C0C0;
}
.myclass{
  .mixin();
  background-color: @bgcolor;
}
  • Mixin和返回值: mixin类似于函数,在mixin中定义的变量将作为它的返回值。
.padding(@x, @y) {
  @padding: ((@x + @y) / 2);
}

.myclass{
  .padding(80px, 120px);  // call to the mixin
  padding-left: @padding; //  returns the value
}
  • Mixin定义另一个mixin
.outerMixin(@value) {
  .nestedMixin() {
    font-size: @value;
  }
}
.myclass {
  .outerMixin(30);
  .nestedMixin();
}

4.5 嵌套

Less允许将一个类的属性用于另一个类,并且包含类名作为其属性

.container{
  h1{
       font-size: 25px;
       color:#E45456;
 }
  p{
       font-size: 25px;
       color:#3C7949;
  }

 .myclass{
  h1{
        font-size: 25px;
        color:#E45456;
  }
  p{
       font-size: 25px;
       color:#3C7949;
  }
 }
}

css

.container h1 {
  font-size: 25px;
  color: #E45456;
}
.container p {
  font-size: 25px;
  color: #3C7949;
}
.container .myclass h1 {
  font-size: 25px;
  color: #E45456;
}
.container .myclass p {
  font-size: 25px;
  color: #3C7949;
}

4.6 操作符

Less支持加减乘除等算术运算

@size: 10px;
.myclass {
 padding-bottom: @size * 2;
 padding-left: @size / 2;
 padding-right: @size + 2;
 padding-top: @size - 2;
}

css

.myclass {
  padding-bottom: 20px;
  padding-left: 5px;
  padding-right: 12px;
  padding-top: 8px;
}

4.7 函数

Color 函数

  • lighten(@color, 10%); // 返回一个比@color低10%更轻的颜色
  • darken(@color, 10%); // 返回一个比@color高10%较暗的颜色
  • saturate(@color, 10%); // 返回比@color多饱和度10%的颜色
  • desaturate(@color, 10%); // 返回一个比@color少饱和度10%的颜色
  • fadein(@color, 10%); // 返回一个比@color少10%透明度的颜色
  • fadeout(@color, 10%); // 返回一个比@color多10%透明度的颜色
  • fade(@color, 50%); // 返回一个颜色透明度为50%的颜色
  • spin(@color, 10); // 返回色调比@color大10度的颜色
  • spin(@color, -10); // 返回一个比@color小10度色调的颜色
  • mix(@color1, @color2); // 返回一个混合@ color1和@ color2的颜色

Math 函数

  • round(1.67); // returns 2
  • ceil(2.4); // returns 3
  • floor(2.6); // returns 2
  • percentage(0.5); // returns 50%

Less内置函数

4.8 Less 命名空间和访问器

less通过命名空间来管理class,有点类似后端的包结构,如下:

//命名空间定义
.class1 {
  .class2 {
    .val(@param) {
      font-size: @param;
      color:green;
    }
  }
}

/访问方式
.myclass {
  .class1 > .class2 > .val(20px);
}

4.9 导入

使用@import可以导入LESS或CSS文件的内容。

@import "style";      // imports the style.less
@import "style.less"; // imports the style.less
@import "style.php";  // imports the style.php as a less file
@import "style.css";  // it will kept the statement as it is

4.10 循环

Loops语句允许我们多次执行一个语句或一组语句。 当递归mixin与 Guard表达式和模式匹配组合时,可以创建各种迭代/循环结构。

.cont(@count) when (@count > 0) {
  .cont((@count - 1));
  width: (25px * @count);
}
div {
  .cont(7);
}

css

div {
  width: 25px;
  width: 50px;
  width: 75px;
  width: 100px;
  width: 125px;
  width: 150px;
  width: 175px;
}

相关文章

  • less学习笔记

    less学习笔记 导入 可以通过下面的形势引入 .less 文件, .less 后缀可带可不带: 如果导入一个CS...

  • 一小时学会less

    less学习(学习笔记,取所需即可) 写在前面:Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加...

  • less学习笔记

    点击查看

  • less学习笔记

    1、 less执行命令:$ lessc styles.less styles.css 输出最小文件: $ l...

  • Less学习笔记

    less是什么 Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、...

  • LESS 学习笔记

    编译器 koala 编译器创建一个 style 文件夹,在其中创建 .less 文件,将文件夹拖入 koala 编...

  • less学习笔记

    一、什么是less less是一种动态样式语言,属于css预处理语言的一种,它使用类似css的语法,为css赋予了...

  • Less 学习笔记

    1. 介绍 Less是一直CSS的预编译语言,是CSS的扩展。使用Less我们也可以对css进行编程,可以定义变量...

  • Less学习笔记

    Less作为 CSS 的一种扩展,不仅完全兼容 CSS 语法,而且连新增的特性也是使用 CSS 语法,你可以在任何...

  • Less学习笔记

    一、简介二、编译工具kaola(推荐)、node.js、浏览器三、用法(一)变量@变量名:值;(二)混合将一个包含...

网友评论

      本文标题:Less 学习笔记

      本文链接:https://www.haomeiwen.com/subject/bsuqnxtx.html