当前位置:实例文章 » HTML/CSS实例» [文章]【微信小程序-uniapp】CustomDialog 居中弹窗组件

【微信小程序-uniapp】CustomDialog 居中弹窗组件

发布人:shili8 发布时间:2024-12-21 10:33 阅读次数:0

**CustomDialog 组件**

在微信小程序开发中,弹窗是非常常见的UI元素。然而,微信小程序提供的原生 `showModal` 方法虽然方便,但其弹窗样式和布局无法满足所有需求。因此,我们需要自定义一个弹窗组件来实现更灵活的布局和样式。

**CustomDialog 组件代码**

html<!-- custom-dialog.vue -->
<template>
 <view class="custom-dialog" :class="{ 'is-center': isCenter }">
 <!-- 弹窗内容区域 -->
 <slot name="content"></slot>
 <!-- 弹窗底部按钮区域 -->
 <view class="dialog-footer">
 <button v-for="(item, index) in footerButtons" :key="index" @tap="handleFooterButtonTap(index)">
 {{ item.text }}
 </button>
 </view>
 </view>
</template>

<script>
export default {
 props: {
 // 是否居中显示弹窗 isCenter: {
 type: Boolean,
 default: false },
 // 弹窗底部按钮列表 footerButtons: {
 type: Array,
 default() {
 return []
 }
 }
 },
 methods: {
 // 处理弹窗底部按钮点击事件 handleFooterButtonTap(index) {
 this.$emit('footer-button-tap', index)
 }
 }
}
</script>

<style>
.custom-dialog {
 position: fixed;
 top:50%;
 left:50%;
 transform: translate(-50%, -50%);
 background-color: #fff;
 border-radius:10px;
 padding:20px;
}

.custom-dialog.is-center {
 left:0;
 right:0;
 margin-left: auto;
 margin-right: auto;
}

.dialog-footer {
 display: flex;
 justify-content: space-between;
 align-items: center;
 padding-top:10px;
}
</style>


**使用示例**

html<!-- index.vue -->
<template>
 <view>
 <!-- 弹窗内容区域 -->
 <custom-dialog is-center @footer-button-tap="handleFooterButtonTap">
 <view class="content">
 <text>这是弹窗的内容区域</text>
 </view>
 <!-- 弹窗底部按钮区域 -->
 <template v-slot:footer>
 <button @tap="handleConfirm">确认</button>
 <button @tap="handleCancel">取消</button>
 </template>
 </custom-dialog>
 </view>
</template>

<script>
import CustomDialog from './custom-dialog.vue'

export default {
 components: { CustomDialog },
 methods: {
 handleFooterButtonTap(index) {
 console.log('弹窗底部按钮点击事件', index)
 },
 handleConfirm() {
 console.log('确认按钮点击事件')
 },
 handleCancel() {
 console.log('取消按钮点击事件')
 }
 }
}
</script>

<style>
.content {
 padding:20px;
}
</style>


**效果展示**

在上面的示例中,我们定义了一个 `CustomDialog` 组件,并使用它来创建一个弹窗。弹窗内容区域包含一个文本元素,弹窗底部按钮区域包含两个按钮:确认和取消。

当用户点击确认或取消按钮时,会触发对应的事件处理函数。事件处理函数可以根据需要进行相应的逻辑处理。

**总结**

在微信小程序开发中,自定义一个弹窗组件是非常有必要的。通过使用 `CustomDialog` 组件,我们可以实现更灵活的布局和样式,并且可以方便地处理弹窗底部按钮点击事件。

希望本文对您有所帮助!

其他信息

其他资源

Top