小程序中带图片modal的实现

前言:做小程序经常会遇到弹框提示,大家应该首选wx.showModal,标题、内容、button内容和颜色都可以自己定义,可以说是满足90%的dialog需求。但是,只支持文本内容,没办法插入图片素材。

先来看看wx.showModal的用法:

wx.showModal({
  title: '温馨提示',
  content: '提示内容。。。',
  confirmText: '确定',
  confirmColor: '#1677d2', 
  cancelText: '取消',
  cancelColor: '#999',
  success: function (res) {
    if (res.confirm) {
      console.log('用户点击确定按钮');
    } else if (res.cancel) {
      console.log('用户点击取消按钮');
    }
  }
})

详细API,请查看:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-react.html#wxshowmodalobject

API中确实没有插入图片素材的参数,因此,只能自己来现实一个图文的modal了~

wxml:

<!-- 图文弹框 -->
<view class='modal-image-text' wx:if="{{modal.isShow}}">
  <view class='modal-mask' bindtap='{{!buttonClicked? "modalClick":""}}'></view>
  <view class='modal-content'>
    <view class='modal-header'>{{modal.title}}</view>
    <view class='modal-body'>
      <view>{{modal.desc}}</view>
      <image src='{{modal.src}}' mode='widthFix' />
    </view>
    <view class='modal-footer'>
      <view class='modal-btn modal-cancel width50' bindtap='{{!buttonClicked? "modalClick":""}}' data-id='0' wx:if="{{modal.cancel}}">{{modal.cancel}}</view>
      <view class='modal-btn modal-ok {{modal.cancel?"width50":""}}' bindtap='{{!buttonClicked? "modalClick":""}}' data-id='1'>{{modal.ok}}</view>
    </view>
  </view>
</view>

js:

modal: {
  isShow: false,  // 图文弹框是否显示
  title: '提示',   // 标题
  desc: '提示内容',  // 内容
  src: '',         // 图片地址,必填,如果没有图片,请直接使用wx.showModal
  ok: '确定',       // 确定按钮文本
  cancel: '',      // 取消按钮文本
}

CSS的代码,这里省略了,JS直接控制modal.isShow就可以让弹框显示或者隐藏了~如果你觉得不够酷炫,可以自己添加CSS动画效果。

效果截图如下:

发现个问题:弹出框后,页面仍然可以滑动。如果你不想让页面滑动,可以添加事件catchtouchmove,这样就会默认阻止事件向上冒泡了,上层view的滑动就不生效了,代码:

<view class='modal-image-text' wx:if="{{modal.isShow}}" catchtouchmove="move">
move: function (e) {
  console.log(222333);    // catch绑定的事件不会向上冒泡
},

后续有时间,我再把上面代码整理成组件,今天就分享到这儿~

原文发布于微信公众号 - 知晓程序员(bainaweb)

原文发表时间:2017-10-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏h5

微信小程序自定义模态弹窗(wcPop)|多种弹窗样式

在平时微信小程序开发中,弹窗应用场景还是蛮广泛的,如果你刚好项目开发中用到的话,希望对你有用~

9600
来自专栏偏前端工程师的驿站

JS魔法堂:LINK元素深入详解

一、前言                               我们一般使用方式为 <link type="text/css" rel="styleshe...

21710
来自专栏ytkah

微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现

先来看看今天的整体思路: 进入分组管理页面-->点击新建分组新建 进入到未分组页面基本操作 进入到已建分组里面底部菜单栏操作-->从名片夹中添加进行操作。 ? ...

3484
来自专栏Windows Community

Windows Phone 8.1 新特性 - 控件之FlipView

本篇为大家介绍 Windows Phone 8.1 中新增的 FlipView 控件,它的中文名字叫做:翻转视图。 虽然听起来有点拗口,但是它的用途大家一定不会...

34310
来自专栏Youngxj

bootstrap简洁居中毛玻璃登录源码

4115
来自专栏抠抠空间

Toastr 通知提示插件

Toastr 简介 jquery toastr 一款轻量级的通知提示框插件。 网页开发中经常会用到提示框,自带的alert样式无法调整,用户体验差。 所以一般通...

3489
来自专栏编程

网页基础篇之如何制作简单的静态网页

每个人都有一个属于自己的星空 上一期介绍了sublime text3开发工具,那么接下来当然是开始了解代码。 一个静态网页大体由HTML, CSS和JavaSc...

5487
来自专栏TungHsu

Microsoft Office的几个快捷键

顾名思义,就是把你刚刚做过的那个动作再来一遍。比如:要取消某段话中的某些超链接超链接

992
来自专栏源哥的专栏

HTML中实现右键菜单功能

我们使用的应用系统很多都有右键菜单功能。但是在网页上面,点击右键一般显示的却是IE默认的右键菜单,那么我们如何实现自己的右键菜单呢?下面将讲解右键菜单功能的实现...

1463
来自专栏前端知识分享

第120天:移动端-Bootstrap基本使用方法

```   ├─ /weijinsuo/ ··················· 项目所在目录   └─┬─ /css/ ···················...

1304

扫码关注云+社区