首页 在Vue中使用Less
文章
取消

在Vue中使用Less

什么是Less

Less使得在CSS样式中使用变量、计算、函数成为可能,它的存在使得CSS更加灵活,也让CSS的编写更加高效

添加less和less-loader依赖

控制台命令:yarn add less less-loader@7.3.0

注意:
1.less-loader的版本一定要与less兼容,否则会报错,如less-loader\@7.3.0和less\@4.1.3是兼容的
2.less-loader依赖是为了解析less文件,因为less无法被浏览器解析,所以需要通过less-loader将less文件编译成CSS文件

在组件中使用less语法

使用less语法时,style标签的lang="less"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*less 的嵌套语法*/
<style lang="less" scoped>
.home {
  height: 530px;
  width: 780px;
  background-color: green;
  margin: auto;
  display: flex;
  flex-direction: column;
  padding: 10px;

  .header-container {
    background-color: #ffcc22;
    flex: 10%;
    display: flex;
    padding: 5px;
    margin-bottom: 10px;
    .header1 {
      background-color: #0066ff;
      flex: 1;
      text-align: center;
      line-height: 40.163px;
      color: white;
    }
    .header2 {
      background-color: #0066ff;
      flex: 2;
      color: white;
      text-align: center;
      line-height: 40.163px;
      margin: 0px 5px;
    }
    .header3 {
      background-color: #0066ff;
      flex: 1;
      color: white;
      text-align: center;
      line-height: 40.163px;
    }
  }
  .body-container {
    background-color: #ffcc22;
    flex: 90%;
    display: flex;
    padding: 5px;
    .body1-container {
      flex: 1;
      background-color: #00aa00;
      display: flex;
      flex-direction: column;
      // padding: 5px;
      .body1-child1 {
        flex: 1;
        background-color: #0066ff;
        margin: 5px;
      }
      .body1-child2 {
        flex: 1;
        background-color: #0066ff;
        margin: 0px 5px 5px 5px;
      }
      .body1-child3 {
        flex: 1;
        background-color: #0066ff;
        margin: 0px 5px 5px 5px;
      }
      .body1-child4 {
        flex: 1;
        background-color: #0066ff;
        margin: 0px 5px 5px 5px;
      }
    }
    .body2-container {
      flex: 2;
      background-color: #00aa00;
      margin: 0px 5px;
      display: flex;
      flex-direction: column;
      .body2-child1 {
        background-color: #ee7700;
        flex: 3;
        margin: 5px;
      }
      .body2-child2-container {
        background-color: #0066ff;
        flex: 1;
        margin: 0px 5px 5px 5px;
        display: flex;
        .atom-child1 {
          background-color: #ee7700;
          flex: 1;
          margin: 5px;
        }
        .atom-child2 {
          background-color: #ee7700;
          flex: 1;
          margin: 5px 5px 5px 0px;
        }
      }
    }
    .body3-container {
      flex: 1;
      background-color: #00aa00;
      flex: 1;
      background-color: #00aa00;
      display: flex;
      flex-direction: column;
      // padding: 5px;
      .body3-child1 {
        flex: 1;
        background-color: #0066ff;
        margin: 5px;
      }
      .body3-child2 {
        flex: 1;
        background-color: #0066ff;
        margin: 0px 5px 5px 5px;
      }
      .body3-child3 {
        flex: 1;
        background-color: #0066ff;
        margin: 0px 5px 5px 5px;
      }
      .body3-child4 {
        flex: 1;
        background-color: #0066ff;
        margin: 0px 5px 5px 5px;
      }
    }
  }
}

</style>

如何在项目中引入全局Less样式

在main.js中import引入:

1
2
3
4
5
6
7
8
import Vue from 'vue'
import App from './App.vue'
import '@/assets/less/common.less' // 全局CSS样式
Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

总结

要想在Vue中使用less,引入less和less-loader两个组件,然后就可以将CSS替换成less语法了

本文由作者按照 CC BY 4.0 进行授权