Vue3编写气泡对话框组件

 更新时间:2022年08月30日 09:37:33   作者:sonicwater  
这篇文章主要为大家详细介绍了Vue3编写气泡对话框组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Vue3气泡对话框组件,使用 TypeScript枚举限定类型,样式用到了 TailwindCSS

组件代码

<template>
  <div class="mt-5 mb-5 p-2 bg-white border-solid border-gray-300 border-l border-t border-r border-b border-light-blue-500 rounded-md relative">
    <div :class="{
      'w-2.5 h-2.5 border-gray-300 bg-white transform absolute': true,
      'border-l border-t rotate-45 -top-1.5 left-4': placement === 'top-start',
      'border-l border-t rotate-45 -top-1.5 inset-x-2/4 -translate-x-1.5': placement === 'top',
      'border-l border-t rotate-45 -top-1.5 right-4': placement === 'top-end',
      'border-l border-t -rotate-45 top-4 -left-1.5': placement === 'left-start',
      'border-l border-t -rotate-45 inset-y-2/4 -left-1.5 -translate-y-1.5': placement === 'left',
      'border-l border-t -rotate-45 bottom-4 -left-1.5': placement === 'left-end',
      'border-r border-b rotate-45 -bottom-1.5 left-4': placement === 'bottom-start',
      'border-r border-b rotate-45 -bottom-1.5 inset-x-2/4 -translate-x-1.5': placement === 'bottom',
      'border-r border-b rotate-45 -bottom-1.5 right-4': placement === 'bottom-end',
      'border-r border-b -rotate-45 top-4 -right-1.5': placement === 'right-start',
      'border-r border-b -rotate-45 inset-y-2/4 -right-1.5 -translate-y-1.5': placement === 'right',
      'border-r border-b -rotate-45 bottom-4 -right-1.5': placement === 'right-end',
    }"></div>
    <slot></slot>
  </div>
</template>

<script lang="ts">
import {
  defineComponent,
  PropType
} from 'vue';

enum EnumPlacement {
  TopStart = "top-start",
  Top = "top",
  TopEnd = "top-end",
  LeftStart = "left-start",
  Left = "left",
  LeftEnd = "left-end",
  BottomStart = "bottom-start",
  Bottom = "bottom",
  BottomEnd = "bottom-end",
  RightStart = "right-start",
  Right = "right",
  RightEnd = "right-end"
}

export default defineComponent({
  name: 'popover-warpper',
  props: {
    placement:{
      type: String as PropType<EnumPlacement>,
      default: 'top-start'
    }
  }
});
</script>
  • 所有样式均使用 TailwindCSS
  • 枚举类型 EnumPlacement 定义了气泡对话框的箭头位置。
  • 组件接收参数 placement,并用 PropType 结合枚举类型限制该参数的值。
  • 参数 placement 可以不传,默认值是 top-start,即箭头指向上方,位置在左端。

使用组件

<template>
  <PopoverWarpper>
    <div class="text-black text-lg">标题</div>
    <div class="mt-2">内容内容内容内容</div>
    <div class="mt-2">内容内容内容内容</div>
  </PopoverWarpper>
</template>
<script>
import { defineComponent } from 'vue';
import PopoverWarpper from '@/components/PopoverWarpper.vue';
export default defineComponent({
  components:{ PopoverWarpper }
})
</script>

展示效果

给组件传参 <PopoverWarpper placement=“right-end”> 可以控制箭头位置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue的url请求图片的问题及请求失败解决

    vue的url请求图片的问题及请求失败解决

    这篇文章主要介绍了vue的url请求图片的问题及请求失败解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 基于VUE实现判断设备是PC还是移动端

    基于VUE实现判断设备是PC还是移动端

    这篇文章主要介绍了基于VUE实现判断设备是PC还是移动端,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Element通过v-for循环渲染的form表单校验的实现

    Element通过v-for循环渲染的form表单校验的实现

    日常业务开发中,form表单校验是一个很常见的问题,本文主要介绍了Element通过v-for循环渲染的form表单校验的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • vue3前端获取文件的绝对路径问题解决

    vue3前端获取文件的绝对路径问题解决

    这篇文章主要给大家介绍了关于vue3前端获取文件的绝对路径问题解决的相关资料,文中通过代码示例介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Vue3中关于setup与自定义指令详解

    Vue3中关于setup与自定义指令详解

    这篇文章主要介绍了Vue3中关于setup与自定义指令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • vue.js组件之间传递数据的方法

    vue.js组件之间传递数据的方法

    本篇文章主要介绍了vue.js组件之间传递数据的方法,组件实例的作用域是相互独立的,如何传递数据也成了组件的重要知识点之一,有兴趣的可以了解一下
    2017-07-07
  • 详解VUE调用本地json的使用方法

    详解VUE调用本地json的使用方法

    这篇文章主要介绍了VUE调用本地json的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • vue组件中的数据传递方法

    vue组件中的数据传递方法

    这篇文章主要介绍了vue组件中的数据传递方法,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • vue.js,ajax渲染页面的实例

    vue.js,ajax渲染页面的实例

    下面小编就为大家分享一篇vue.js,ajax渲染页面的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • elementui[el-table]toggleRowSelection默认多选事件无法选中问题

    elementui[el-table]toggleRowSelection默认多选事件无法选中问题

    这篇文章主要介绍了elementui[el-table]toggleRowSelection默认多选事件无法选中问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论