电子屏数字

组件将数字转化成电子屏数字的模式展现,效果图如下:

效果图

预览地址

预览地址

组件开发

设计思路

数字的主体是一个二维数组组成的图形,通过数组中的值来管制具体块的展现模式。

//如0的实质是这样的一个二维数组[[1,1,1],[1,0,1],[1,0,1],[1,0,1],[1,1,1]]

入参

//要转化的数字numbers: {    type: Array,    default: [0,22]},//数字主体色彩numberColor: {     type: String,     default: 'black'},//数字尺寸numberSize:{      type: String,      default: '1rem'}

次要函数

将数字转换为二维数组
getNumber(num){      switch (num.toString()){        case '0':          return [            [1,1,1],            [1,0,1],            [1,0,1],            [1,0,1],            [1,1,1],          ];          break;        case '1':          return [            [0,1,0],            [0,1,0],            [0,1,0],            [0,1,0],            [0,1,0],          ];          break;          ………………          ………………                default :          break;      }      return [];}
批改块元素款式
rowStyle(row){      let res = `width:calc(${this.numberSize}/5);height:calc(${this.numberSize}/5);`;      if(row == 1){        res += `background-color: ${this.numberColor};`;      }      return res;    },
将字符串转换成二维数组
getShowNum(num){      num = num.toString();      let res = [];      for(let i = 0; i < num.length; i++){        let temp = this.getNumber(num[i]);        if(num[i] != 1){          for(let j = 0; j < temp.length; j++){            temp[j].push(0);          }        }        if(res.length == 0) res = temp;        else{          for(let j = 0; j < res.length; j++){            res[j] = res[j].concat(temp[j]);          }        }      }      return res;    }

残缺代码

html
<template>  <div class="numbers-style">    <div v-for="(number,numberIndex) in numbers"         :key="numberIndex"         class="number-style">      <div v-for="(column,columnIndex) in getShowNum(number)"           :key="columnIndex"           class="column" >        <div v-for="(row,rowIndex) in column"             :key="rowIndex"             class="cell"             :style="rowStyle(row)">        </div>      </div>    </div>  </div></template>
JavaScript
<script>export default {  name: "electronicNumber",  props: {    numbers: {      type: Array,      default: [0,22]    },    numberColor: {      type: String,      default: 'black'    },    numberSize:{      type: String,      default: '1rem'    }  },  data() {    //这里存放数据",    return {      showNum:[]    };  },  //监听属性 相似于data概念",  computed: {},  //监控data中的数据变动",  watch: {},  mounted(){  },  //办法汇合",  methods: {    getNumber(num){      switch (num.toString()){        case '0':          return [            [1,1,1],            [1,0,1],            [1,0,1],            [1,0,1],            [1,1,1],          ];          break;        case '1':          return [            [0,1,0],            [0,1,0],            [0,1,0],            [0,1,0],            [0,1,0],          ];          break;        case '2':          return [            [1,1,1],            [0,0,1],            [1,1,1],            [1,0,0],            [1,1,1],          ];          break;        case '3':          return [            [1,1,1],            [0,0,1],            [1,1,1],            [0,0,1],            [1,1,1],          ];          break;        case '4':          return [            [1,0,1],            [1,0,1],            [1,1,1],            [0,0,1],            [0,0,1],          ];          break;        case '5':          return [            [1,1,1],            [1,0,0],            [1,1,1],            [0,0,1],            [1,1,1],          ];          break;        case '6':          return [            [1,1,1],            [1,0,0],            [1,1,1],            [1,0,1],            [1,1,1],          ];          break;        case '7':          return [            [1,1,1],            [0,0,1],            [0,0,1],            [0,0,1],            [0,0,1],          ];          break;        case '8':          return [            [1,1,1],            [1,0,1],            [1,1,1],            [1,0,1],            [1,1,1],          ];          break;        case '9':          return [            [1,1,1],            [1,0,1],            [1,1,1],            [0,0,1],            [1,1,1],          ];          break;        case ':':          return [            [0,0,0],            [0,1,0],            [0,0,0],            [0,1,0],            [0,0,0],          ];          break;        case '.':          return [            [0,0,0],            [0,0,0],            [0,0,0],            [0,0,0],            [0,1,0],          ];          break;        case '/':          return [            [0,0,0],            [0,0,1],            [0,1,0],            [1,0,0],            [0,0,0],          ];          break;        case '\\':          return [            [0,0,0],            [1,0,0],            [0,1,0],            [0,0,1],            [0,0,0],          ];          break;        case '+':          return [            [0,0,0],            [0,1,0],            [1,1,1],            [0,1,0],            [0,0,0],          ];          break;        case '-':          return [            [0,0,0],            [0,0,0],            [1,1,1],            [0,0,0],            [0,0,0],          ];          break;        case '=':          return [            [0,0,0],            [1,1,1],            [0,0,0],            [1,1,1],            [0,0,0],          ];          break;        case ' ':          return [            [0],            [0],            [0],            [0],            [0],          ];          break;        default :          break;      }      return [];    },    rowStyle(row){      let res = `width:calc(${this.numberSize}/5);height:calc(${this.numberSize}/5);`;      if(row == 1){        res += `background-color: ${this.numberColor};`;      }      return res;    },    getShowNum(num){      num = num.toString();      let res = [];      for(let i = 0; i < num.length; i++){        let temp = this.getNumber(num[i]);        if(num[i] != 1){          for(let j = 0; j < temp.length; j++){            temp[j].push(0);          }        }        if(res.length == 0) res = temp;        else{          for(let j = 0; j < res.length; j++){            res[j] = res[j].concat(temp[j]);          }        }      }      return res;    }  },}</script>
CSS
<style lang="scss" scoped>  .numbers-style{    display: flex;    flex-wrap: wrap;    .number-style{      flex-wrap: wrap;      .column{        display: flex;        .black{          background-color: black;        }      }    }  }</style>

代码地址

Gitee