Less 快速入门

本文详细介绍Less CSS的安装及使用方法,包括变量、混合、嵌套等高级特性,以及如何在Vue项目中引入Less,适合前端开发者进阶学习。

官网文档(中文):
Less 安装
Less 快速入门
Less 函数手册

一、less引用/安装:

在浏览器中使用Less.js是最简单的入门方式,并且使用Less进行开发很方便。(但是在生产中,当性能和可靠性很重要时,我们建议使用Node.js或许多可用的第三方工具之一进行预编译)
1.1 引用less.js来使用less

  • 1.首先,将自己建的styles.less样式表的rel属性设置为“ stylesheet/less”;
  • 2.接下来,引用less.js,注意该引用要放至样式表之后
<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.5.3/less.min.js"></script>

1.2 在vue中使用less
第一步:安装 less 和less-loader

npm install less less-loader --save

第二步:修改webpack.base.config.js文件,配置loader加载依赖,让其支持外部的less,在原来的代码上添加
在这里插入图片描述
第三步:在vue文件中的style标签中添加lang="less"即可在标签中使用less,或者外部引入less
在这里插入图片描述

二、用法

  • 1.变量(Variables)

    使用@定义变量

@width: 10px;
@height: @width + 10px;

#header {
  width: @width;
  height: @height;
}
  • 2.混合(Mixins)

    Less 允许我们将常用的样式,打包封装到 class 或 id 选择器中,其它地方可以方便的引用

#circle{
  background-color: #4CAF50;
  border-radius: 100%;
}

#small-circle{
  width: 50px;
  height: 50px;
  #circle
}

#big-circle{
  width: 100px;
  height: 100px;
  #circle
}

如果只用于样式打包,而不出现在css代码中,那么请在它的后面加上(),且支持传入参数

#bg-item(@widthSize:300px,@heightSize:100px){
  background: #fff;
  color: #0b2e13;
  display: inline-block;
  width: @widthSize;
  height: @heightSize;
}

.box1{
  #bg-item(500px,200px);
}

.box2{
  #bg-item;
}
  • 3.嵌套(Nesting)

    嵌套可用于以与页面的HTML结构相匹配的方式构造样式表,同时减少了冲突的机会

ul{
  @textColor: #666;
  background: @color-f;

  li{
    color: @textColor;
  }
}
  • 4.运算(Operations)

    算术运算符 +、-、*、/ 可以对任何数字、颜色或变量进行运算

@div-width: 300px;
@div-height: 100px;
@color-c: #03A9F4;

#contentBox(@height:100px){
  display: inline-block;
  color: @color-f;
  height: @height;
}

.content1{
  width: @div-width;
  background: @color-c;
  #contentBox(@div-height*2);
}

.content2{
  width: @div-width + 200;
  background: @color-c + 20;
  #contentBox();
}

calc() 特例

为了与 CSS 保持兼容,calc() 并不对数学表达式进行计算,但是在嵌套函数中会计算变量和数学公式的值。

@var: 50vh/2;
width: calc(50% + (@var - 20px));  // 结果是 calc(50% + (25vh - 20px))
  • 5.转义(Escaping)

    转义允许你使用任意字符串作为属性或变量值

@min768: ~"(min-width: 768px)";
.element {
  @media @min768 {
    width: 200px;
    height: 200px;
    background: #719df7;
  }
}

编译为:

@media (min-width: 768px) {
  .element {
    font-size: 1.2rem;
  }
}

注意,从 Less 3.5 开始,可以简写为:

@min768: (min-width: 768px);
.element {
  @media @min768 {
    width: 200px;
    height: 200px;
    background: #719df7;
  }
}
  • 6.函数(Functions)

    Less中有许多函数,详见 Less 函数手册

    例如,降低颜色透明度的函数fadeout()

.content1:hover{
  background: fadeout(@color-c,50%);
}
  • 7.命名空间和访问符

    有时,出于组织结构或仅仅是为了提供一些封装的目的,我们希望对混合(mixins)进行分组

    可以将一些混合(mixins)和变量置于 #bundle 之下,为了以后方便重用或分发

#bundle() {
  .button() {
    display: block;
    border: 1px solid black;
    background-color: grey;
    &:hover() {
      background-color: white;
    }
  }
  .tab() { ... }
  .citation() { ... }
}

#header a {
  #bundle.button();  // 还可以书写为 #bundle > .button 形式
}
  • 8.映射(Maps)

    从 Less 3.5 版本开始,可以将混合和规则集作为一组值的映射使用

#colors() {
  primary: blue;
  secondary: green;
}

.button {
  color: #colors[primary];
  border: 1px solid #colors[secondary];
}
  • 9.作用域(Scope)

    Less 中的作用域与 CSS 中的作用域非常类似。首先在本地查找变量和混合(mixins),如果找不到,则从“父”级作用域继承

@var: red;

#page {
  @var: white;
  #header {
    color: @var; // white
  }
}

与 CSS 自定义属性一样,混合(mixin)和变量的定义不必在引用之前事先定义。因此,下面的 Less 代码示例和上面的代码示例是相同的:

@var: red;

#page {
  #header {
    color: @var; // white
  }
  @var: white;
}
  • 10.注释(Comments)

    块注释和行注释都可以使用

/* 一个块注释
 * style comment! */
@var: red;

// 这一行被注释掉了!
@var: white;
  • 11.导入(Importing)

    Less文件可以导入一个 .less 文件,此文件中的所有变量就可以全部使用了。如果导入的文件是 .less 扩展名,则可以将扩展名省略掉

@import "library"; // library.less
@import "typo.css";

注意: 在less中使用calc计算要采用以下写法

 height: calc(~'100% - 64px');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值