Vue3从0到1组件开发-基础组件:Mask

本文详细介绍了在Vue3中从零开始开发基础组件——Mask的重要性、结构和逻辑实现。通过分析为何在组件库中独立创建Mask组件,讨论了其在移动端和Web端的应用场景。文中给出了Mask的HTML结构、CSS样式以及JavaScript逻辑,包括禁止滚动、点击事件处理和取消事件的完整流程。最后探讨了在Web端是否需要单独组件的权衡。
摘要由CSDN通过智能技术生成

Mask:不要不在乎遮罩

Why is mask?

在一个完整的组件库中,抽出Mask作为一个单独的组件仍然是可有可无的一种处理方法。而将Mask暴露给开发者使用的似乎更少,多见于主攻移动端的UI库当中,如Vantuniapp(下载插件) 等,而在主攻Web端的UI库当中则及其少见。当然也是因为Web端很少功能需要用到这类的组件。

此处所指的"完整的组件库"指能满足一个项目的基本功能需求的组件库。

但是在我所设想的组件库当中还是把它作为一个单独的组件库来开发,其中之一的原因在于我想把我的项目兼容移动端的平台,所以在为后面铺路。

并且Mask组件也是基础组件中比较有深度的一个组件了,除了正常的布局以外,还需要考虑比Button组件更复杂一点点的应用场景,例如点击事件是否触发点击事件禁止页面滚动,等一些小细节。

结构主体

前面提了个梗概,那么接下来,我们要做的就是用代码丰满它。

还是先把主要结构写出来。

<template lang="pug">
block content
div(
  v-if="isShow"
  class="yx-mask"
  @touchmove.stop.prevent="clear"
)
  div(
    class="yx-mask-class"
    :style="{backgroundColor: `${bgColor}`}"
    @click="cancel"
  )
    div(
      class="yx-mask__wrapper-box"
      @click="clear"
    )
      slot
</template>

尽管在基础组件中算是有点复杂点的组件了,但毕竟还是基础组件,所以结构还是停简单的,所以需要完成的事件也比较简单。

但是在完善事件之前,这里还是要贴一下它的css代码。毕竟有一部分的逻辑处理是涉及到了css部分的。

.yx-mask-class{
   
  position: fixed;
  left: 0; right: 0;
  top: 0; bottom: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值