首先安装vue-cli,网站教程多多,在这不多说。
接下来在vue项目目录下,运行

其他扩展使用方法我放个官网链接,大家可以点击查看

npm install less less-loader --save-dev
等待安装成功即可,接下里我们可以在vue项目中的package.json中看到less的相关依赖

接下来找到bulid目录下的webpack.base.conf.js并打开,找到module下的rules写下

{
test: /\.less$/,
loader: "style-loader!css-loader!less-loader"
}
如果没有module和rules就可以自己加上(一般都是有的,没有说明你可以安装错误vue-cli或者找错文件)

module: {
rules: [
{
test: /\.less$/,
loader: "style-loader!css-loader!less-loader"
}
]
},
以上步骤全部走完,接下来,

我们可以打开组件文件在下面style标签里面写上lang="less"表示以less语法解析css,

大家接下来可以跟着我学习完less基础语法进行实验

less语法介绍
介绍less是什么

Less是一门css预处理语言,它扩展了css语言,革命了css,增加了变量、mixin、函数等特性、使得css更加易于维护和扩展。Less的好处和优点,接下来我会用代码实现。

语法
变量

(1)在less里面,我们在写样式的时候,需要给元素加上背景颜色。考虑到以后会修改主题样式,我们就可以使用变量来很方便的修改background-color。

@tabBar-red-style:#f00
#tabBar{
background:@tabBar-red-style
}
在页面上id为tabBar的元素的背景就会被显示为#f00,会被正常的渲染出来,以后倘若变态的产品经理想要全局改变颜色风格,就可以只改变移除变量即可全局修改。

(2)变量还可以使用变量名定义变量,例如

@message: "this is a string";
@text: 'message';
content: @@text;
在content这个属性后面就是this is a string这个内容

混合

我们通常在写css的时候会重复写好多同样的类,比如text-align:center,margin:0 auto,之类的css,现在我们可以定义一个class然后在其他class里面去调用,例如

.col-row-center{
dispaly:flex;
align-items:center;
justify-content:center;
}
.message{
.col-row-center
}
//等同于
.message{
dispaly:flex;
align-items:center;
justify-content:center;
}
同样可以被解析成功,比如解决浮动父元素高度丢失,一个元素的水平垂直居中都可以用一个公共的class来引用。

携带参数的混合使用

混合如果只能这么单一的使用实在是简单,在混合里面我们可以像函数一样携带参数传值使用,例如

(1)带一个参数

.border-radius (@radius) {
border-radius: @radius;
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
}
#tabBar{
.border-radius(4px);//使用时可以在括号内写入想要的值
}
.card{
.border-radius(6px);
}
(2)给参数设定默认值

.border-radius (@radius:4px) {
border-radius: @radius;
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
}
#tabBar{
.border-radius();//此时不传值也会有默认值传入
}
.card{
.border-radius();
}
(3)不写参数防止隐藏css

.border-radius () {
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
}
#tabBar{
.border-radius();//此时不传值在解析过程中,.border-radius类不会出现在css文件之中,节省css空间
}
.card{
.border-radius();
}
(4)@arguments大量传参,节省操作

.box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) {
box-shadow: @arguments;
-moz-box-shadow: @arguments;
-webkit-box-shadow: @arguments;
}
.box-shadow(2px, 5px);
模式匹配

根据传入的参数来改变混合的默认呈现,例如

//让.mixin根据不同的@switch值而表现各异
.mixin (dark, @color) {
color: darken(@color, 10%);
}
.mixin (light, @color) {
color: lighten(@color, 10%);
}
.mixin (@_, @color) {
display: block;
}

//运行
@switch: light;

.class {
.mixin(@switch, #888);
}
上面代码意思是使用.mixin时,@switch位置上的值是dark那就应用第一个.mixin,如果是light那就应用第二哥.mixin,第三个@_是接受一切值得配对,第三个可以一直被使用。css文件中看到的内容应该就是

.class {
color: #a2a2a2;
display: block;
}
引导表达式

(1)根据表达式进行匹配,而非根据值和参数匹配

//when关键字用以定义一个导引序列(此例只有一个导引)
.mixin (@a) when (lightness(@a) >= 50%) {
background-color: black;
}
.mixin (@a) when (lightness(@a) < 50%) {
background-color: white;
}
.mixin (@a) {
color: @a;
}

//运行
.class1 { .mixin(#ddd) }
.class2 { .mixin(#555) }
这里面就会进行一些列的运算对比从而选择正确的类

(2)导引中可用的全部比较运算有: > >= = =< <。此外,关键字true只表示布尔真值,除去关键字true以外的值都被视示布尔假

.truth (@a) when (@a) { ... }
.truth (@a) when (@a = true) { ... }
(3)导引序列使用逗号‘,’—分割,当且仅当所有条件都符合时,才会被视为匹配成功

.mixin (@a) when (@a > 10), (@a < -10) { ... }
(4)导引可以无参数,也可以对参数进行比较运算

@media: mobile;

.mixin (@a) when (@media = mobile) { ... }
.mixin (@a) when (@media = desktop) { ... }

.max (@a, @b) when (@a > @b) { width: @a }
.max (@a, @b) when (@a < @b) { width: @b }
嵌套规则

嵌套的写法会让css看起来非常有层次感,易于浏览器解析

(1)以嵌套的方式编写层叠样式

css的写法

#header { color: black; }
#header .navigation {
font-size: 12px;
}
#header .logo {
width: 300px;
}
#header .logo:hover {
text-decoration: none;
}
less的写法

#header {
color: black;

.navigation {
font-size: 12px;
}
.logo {
width: 300px;
&:hover { text-decoration: none }
}
}
(2)&符号用于写串联选择器,而不是写后代选择器。这点对伪类尤其有用,如:hover和:focus

.bordered {
&.float {
float: left;
}
.top {
margin: 5px;
}
}
解析出来如下

.bordered.float {//中间没有空格
float: left;
}
.bordered .top {//中间有空格
margin: 5px;
}
运算

less中的运算也会非常实用

(1)任何数字、颜色或者变量都可以参与运算

@base: 5%;
@filler: @base * 2;
@other: @base + @filler;

color: #888 / 4;
background-color: @base-color + #111;
height: 100% / 2 + @filler;
(2)less运算能够分辨出颜色和单位

@var: 1px + 5; //less会输出6px

//括号也同样允许使用
width: (@var + 5) * 2;

//可以在复合属性中进行运算
border: (@width * 2) solid black;
Color 函数

(1)less提供了一系列的颜色运算函数. 颜色会先被转化成 HSL色彩空间, 然后在通道级别操作

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函数

less提供的数学函数可以方便的为一些需求提供便利

round(1.67); // returns `2`
ceil(2.4); // returns `3`
floor(2.6); // returns `2`
percentage(0.5); // returns `50%`
作用域

和js的作用域相同,会在当前作用域下查找变量,如果没有,会到上级父元素茶找

@var: red;

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

#footer {
color: @var; // red
}
注释

less里面的注释沿用了css的舒适,包括js的注释也可以使用

/* Hello, I'm a CSS-style comment */
.class {
color: black
}

// Hi, I'm a silent comment, I won't show up in your CSS
.class {
color: white
}
import

当你拥有一个common.less里面存储着大量复用class,可以使用import来引入文件使用

@import "lib.less";
@import "lib";
字符串插值

变量可以用类似js模板字符串方式嵌入到字符串中

@base-url: "http://assets.fnord.com";
background-image: url("@{base-url}/images/bg.png");
避免编译

有时候我们需要输出一些不正确的CSS语法或者使用一些 less不认识的专有语法。要输出这样的值我们可以在字符串前加上一个 ~,并将要避免编译的值用 “”包含起来

.class {
filter: ~"ms:alwaysHasItsOwnSyntax.For.Stuff()";
}
javascript表达式

(1)JavaScript 表达式也可以在.less 文件中使用.,可以通过反引号的方式使用

@var: `"hello".toUpperCase() + '!'`; //@var: "HELLO!";
(2)也可以同时使用字符串插值和避免编译

@str: "hello";
@var: ~`"@{str}".toUpperCase() + '!'`; //@var: HELLO!;
(3)也可以访问JavaScript环境

@height: `document.body.clientHeight`;
(4)将一个JavaScript字符串解析成16进制的颜色值,可以使用 color 函数

@color: color(`window.colors.baseColor`);
@darkcolor: darken(@color, 10%);
本人也只是从官网和boot网站学习和摘录,供自己记忆加深方便以后查阅。如有不全及错误,请自行查阅和评论通知修改

Vue-cli 中安装并使用less的更多相关文章

  1. Vue Cli 中使用 Karma / Chrome 执行样式相关单元测试

    在 GearCase 开源项目 中,我使用了 Vue Cli 的默认测试框架.因此和样式相关的东西,都无法进行测试.因为它并不类似于无头浏览器,而是存在于虚拟内存之中. 现状 在如下 button.s ...

  2. vue cli的安装与使用

    一.简介 vue作为前端开发的热门工具,受到前端开发人员的喜爱.为了简化项目的构建,采用vue cli来简化开发. vue cli是一个全局安装的npm包,提供了终端使用的命令.vue create可 ...

  3. Vue CLI 介绍安装

    https://cli.vuejs.org/zh/guide/ 介绍 警告 这份文档是对应 @vue/cli 3.x 版本的.老版本的 vue-cli 文档请移步这里. Vue CLI 是一个基于 V ...

  4. vue 项目中安装npm--save-dev 和 --save 命令

    在vue项目中我们常用npm install 安装模块或插件 有两种命令把他们写入到 package.json 文件里面去 例如安装axios 安装到开发环境npm axios --save-dev ...

  5. vue cli 中关于vue.config.js中chainWebpack的配置

    Vue CLI  的官方文档上写:调整webpack配置最简单的方式就是在vue.config.js中的configureWebpack选项提供一个对象. Vue CLI 内部的 webpack 配置 ...

  6. vue cli中的env详解

    前言 相信使用过 vueCli 开发项目的小伙伴有点郁闷,正常开发时会有三个接口环境(开发,测试,正式),但是 vueCli 只提供了两种 development,production(不包含 tes ...

  7. scss是什么?在vue.cli中的安装使用步骤是?有哪几大特性?

    css的预编译: 使用步骤: 第一步:用npm下三个loader(sass-loader.css-loader.node-sass): 第二步:在build目录找到webpack.base.confi ...

  8. 在vue项目中安装使用Mint-UI

    一.Mint UI 是 由饿了么前端团队推出的 一个基于 Vue.js 的移动端组件库,具有以下特性:       使用文档: http://mint-ui.github.io/#!/zh-cn Mi ...

  9. vue项目中安装使用vux

    vux是个vue的移动端框架. 目前移动端UI框架这么多,为啥选择vux呢?vux虽然说是个个人维护项目,但是有15000+个star,应该不比其他的团队开源框架差. 最重要的是,目前要做微信公众号和 ...

  10. vue.cli 中使用 less 来写css样式

    vue-cli 的webpack中已配置了less,但 package.json 中没有选项,为了方便开发中使用,需安装一下: 安装方式一: npm install less less-loader ...

随机推荐

  1. CF798D Mike and distribution

    CF798D Mike and distribution 洛谷评测传送门 题目描述 Mike has always been thinking about the harshness of socia ...

  2. OpenStack I18N

    OpenStack I18N 官方文档: https://docs.openstack.org/oslo.i18n/latest/user/usage.html https://docs.openst ...

  3. package.json文件配置详解

    package.json 是npm init命令初始化后,在项目的根目录下自动生成的配置文件,它定义了这个项目的配置信息以及所需要的各种模块,npm install根据这个命令,自动下载所需的模块.p ...

  4. 【2019.8.9 慈溪模拟赛 T2】摘Galo(b)(树上背包)

    树上背包 这应该是一道树上背包裸题吧. 众所周知,树上背包的朴素\(DP\)是\(O(nm^2)\)的. 但对于这种体积全为\(1\)的树上背包,我们可以通过记\(Size\)优化转移时的循环上界,做 ...

  5. Paper | Residual Dense Network for Image Super-Resolution

    目录 Residual dense block & network 和DenseNet的不同 摘要和结论 发表在2018年CVPR. 摘要和结论都在强调方法的优势.我们还是先从RDN的结构看起 ...

  6. 聊一下,前后分离后带来的跨域访问和cookie问题

    在谈前后分离前,我们先看看什么是前后一体的.当我们用javaweb开发网站时,最终我们渲染的jsp或者springthymeleaf.我们的页面其实是WEB-INFO或者templates下.当用户请 ...

  7. 普通的行专列;oracle行专列;更新中。。。

    题记 本来想写一个完整的表创建,但是其他人都写过啦,要不这样,你们有什么行转列的问题给我留言,我直接回答如何 Oracle的行转列 这篇文章不错:https://blog.csdn.net/huay_ ...

  8. telnet 发送邮件

    telnet smtp.aliyun.com 25 // 这里用的是阿里云的smpt服务器,并且开放25端口 helo hi // 和阿里云的smtp服务器打招呼,测试是否连通 auth login ...

  9. Autoware 培训笔记 No. 1——构建点云地图

    1. 首记 相信许多刚开始玩无人驾驶的人都用过Autoware,对runtime manager都比较熟悉,虽然可以通过各种渠道了解到有些设置,甚至有些设置的app下参数的含义,但是,在真车的使用过程 ...

  10. 百度编辑器上传视频报Http请求错误,.net实现方式

    在使用百度编辑器上传视频的时候遇到一个很奇怪的问题,当视频大小在20M以下的时候,上传正常.当大于20M时,一直报Http请求错误. 处理步骤: 1.修改编辑器配置信息,如图所示,改成你想要的大小 2 ...