vue虚拟键盘demo

156 阅读1分钟

知识点: 数组方法,事件委派,css过渡
数组方法: pop(),从末尾出栈
css过渡:

image.png

事件捕获:

image.png

效果预览:

image.png 首先开始布局:

// 还是更建议使用JSON对象
const arr = reactive([1, 2, 3, 4, 5, 6, 7, 8, 9, 0, '*'])
const valArr = reactive([]) // 输入框的值
 <div class="ipt">
    <div class="box" v-for="v in 6" :key="v">
      {{ valArr[v-1] }}
      <!--这就是那个小黑点-->
      <div class="mask" :style="!valArr[v - 1] ? { opacity: 0 , width: '40px', height: '40px'} : {}"></div>
    </div>
  </div>
  <div class="keyBorder" @click="handleBtn($event)">
    <div class="item" v-for="v in arr" :key="v" :id="v.toString()">{{  v }}</div>
  </div>

然后就是绑定事件的函数了,其实很简单

const handleBtn = (e: Event) => {
// 事件只给父组件绑定事件,然后捕获出发的按钮
if (valArr.length < 6 && e.target.id && e.target.id !== '*') valArr.push(e.target.id)
if (e.target.id === '*') valArr.pop()
// 将valArr抛出去
}