微信小程序开发之——Dialog弹窗

本文详细介绍了微信小程序中modal弹窗和WeUI组件dialog的实现原理、代码示例和展示效果。从布局、样式到逻辑控制,涵盖了从基础组件到实际应用的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 概述

小程序中弹窗的两种方式:

  • modal弹窗
  • WeUI组件dialog

二 弹窗原理

  • 在布局中事先放置好要显示的Dialog布局
  • 通过一个参数dialogShow控制Dialog的显示与隐藏
  • 点击按钮时,通过 this.setData({ dialogShow: false,})改变Dialog的值并改变Dialog的状态

三 modal弹窗

3.1 布局文件(modal.wxml)

<view class="container-view">
  <view>主题内容</view>
</view>
<!--modal-->
<!--弹窗-->
<view>
  <view class="modal-mask" bindtap="hideModal" catchtouchmove="preventTouchMove" wx:if="{{showModal}}">
    <view class="modal-dialog" wx:if="{{showModal}}">
      <video src="https://res.wx.qq.com/wxaliveplayer/htdocs/video14e1eea.mov"></video>
    </view>
  </view>
</view>

3.2 样式文件(modal.wxss)

.container-view {
  width: 100vh;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal-mask {
  display: flex;
  justify-content: center;
  align-items: center;
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 999;
}

.modal-dialog {
  width: 80%;
  height: 70%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  position: fixed;
  margin: 0 auto;
  z-index: 9999;
  background: #f9f9f9;
  border-radius: 36rpx;
}

.container-view {
  width: 100%;
  height: 100%;
}

3.3 逻辑文件(modal.js)

Page({
  data: {
    showModal:true
  },
})

3.4 显示效果

四 WeUI组件dialog

4.1 项目引入WeUI

微信小程序开发之——WeUI快速上手

4.2 布局文件(dialog.wxml)

<view class="page" data-weui-theme="{{theme}}">
  <view class="page__bd">
    <view class="weui-btn-area">
      <button class="weui-btn" type="default" bindtap="openConfirm">确认取消按钮</button>
      <button class="weui-btn" type="default" bindtap="tapOneDialogButton">只有确认按钮</button>
    </view>
  </view>
  <mp-dialog title="test" show="{{dialogShow}}" bindbuttontap="tapDialogButton" buttons="{{buttons}}">
    <view>test content</view>
  </mp-dialog>
  <mp-dialog title="test1" show="{{showOneButtonDialog}}" bindbuttontap="tapDialogButton" buttons="{{oneButton}}">
    <view>test content1</view>
  </mp-dialog>
</view>

4.3 逻辑文件(dialog.js)

Page({
  data: {
    dialogShow: false,
    showOneButtonDialog: false,
    buttons: [{text: '取消'}, {text: '确定'}],
    oneButton: [{text: '确定'}],
  },
  openConfirm: function () {
    this.setData({
      dialogShow: true
    })
  },
  tapDialogButton(e) {
    this.setData({
      dialogShow: false,
      showOneButtonDialog: false
    })
  },
  tapOneDialogButton(e) {
    this.setData({
      showOneButtonDialog: true
    })
  }
})

4.4 显示效果图

五 参考

### 微信小程序 Uni-app 中 `uni-popup` 组件的使用教程 #### 一、简介 `uni-popup` 是 uni-app 提供的一个用于创建弹窗效果的组件,适用于多种场景下的提示和交互操作。通过配置不同的参数可以轻松实现诸如消息提醒、确认对话框等功能。 #### 二、基础用法 为了使 `uni-popup` 正常工作,在页面中需先注册此组件: ```html <template> <!-- 弹层容器 --> <view class="content"> <button type="primary" @click="showPopup">显示弹窗</button> <!-- 定义popup --> <uni-popup ref="popupRef" :mask-click="false"> 这里是弹出的内容... </uni-popup> </view> </template> <script setup lang="ts"> import { ref } from 'vue'; const popupRef = ref(null); function showPopup() { popupRef.value.open(); } </script> ``` 上述代码展示了如何定义一个简单的 `uni-popup` 实例以及触发其展示的方法[^2]。 #### 三、配合 `uni-popup-dialog` 创建对话框 如果希望构建更复杂的交互形式比如带有输入框的消息框,则可以通过组合 `uni-popup` 和专门设计用来作为对话窗口使用的子组件——`uni-popup-dialog` 来达成目的: ```html <!-- 对话框样式popup --> <uni-popup ref="dialogRef" type="dialog"> <uni-popup-dialog mode="input" title="请输入您的意见" placeholder="在这里写下您想说的..." @confirm="handleConfirm" ></uni-popup-dialog> </uni-popup> ``` 这里设置了 `type="dialog"` 属性来指定当前实例应表现为对话框形态;同时利用 `@confirm` 事件监听器捕获用户点击确定按钮的动作以便后续处理。 #### 四、注意事项 - 当前版本下 iOS 设备上可能会遇到自动唤起软键盘的情况,这属于已知问题之一。 - 开发者应当注意官方文档更新情况以获取最新特性支持与解决方案建议[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值