前言

接口返回的list信息,每个list在页面的颜色显示不一样,包括字体颜色呀、项目符号呀(类似无序列表前面的小点点)等等。

不用less循环编写css

首先肯定是要用for循环处理list输出内容,考虑颜色不一致,就定义了一些颜色变量,循环list的时候给每一项设置不同的class名(以id结尾的class name),然后分别给每一项编写不同的css。会是如下的情况👇

  1. <template>
  2. <div v-for="item in list" :key="item.id">
  3. <span :class="`symbol-${item.id}`">
  4. {{item.id}}
  5. </span>
  6. </div>
  7. </template>
  8. ...
  9. <style lang='less' rel='stylesheet/less' scoped>
  10. .symbol-A01 {
  11. background: #4760f0;
  12. }
  13. .symbol-A02 {
  14. background: #ff7249;
  15. }
  16. .symbol-A03 {
  17. background: #9c60fd;
  18. }
  19. .symbol-A04 {
  20. background: #49deff;
  21. }
  22. .symbol-A05 {
  23. background: #7da1fe;
  24. }
  25. </style>

发现写了很多重复性的东西,本能的想到可以通过循环处理。Less早就考虑到了,来看一下怎么实现吧👇

less循环输出样式

  1. // 定义颜色变量
  2. @A01: #4760f0;
  3. @A02: #ff7249;
  4. @A03: #9c60fd;
  5. @A04: #49deff;
  6. @A05: #7da1fe;
  7. .loopSymbol(@count) when (@count > 0) {
  8. .loopSymbol((@count - 1));
  9. .symbol-A0@{count} {
  10. // background: '@{A0@{count}}'; // 这种写法输出的色值带引号: background: '#4760f0';
  11. @id:'A0@{count}';
  12. background: @@id; // 引用
  13. }
  14. }
  15. .loopSymbol(5);

说明:首先定义颜色变量,然后代码整体的目的就是循环输出 class style,class name可以通过变量控制,比较难办的是在background属性值的处理上,要根据循环输出变量的同时,引用事先定义好的颜色变量

搞定,是不是看着挺高级的。
这样写也方便管理颜色变量,如果ui有变化的话,直接修改变量就好了

效果展示

下面,看一下上面less代码的输出

  1. # 全局安装less
  2. npm install less -g
  3. # 进入项目目录,编译less文件
  4. lessc index.less index.css

查看输出的index.css文件

  1. .symbol-A01 {
  2. background: #4760f0;
  3. }
  4. .symbol-A02 {
  5. background: #ff7249;
  6. }
  7. .symbol-A03 {
  8. background: #9c60fd;
  9. }
  10. .symbol-A04 {
  11. background: #49deff;
  12. }
  13. .symbol-A05 {
  14. background: #7da1fe;
  15. }