微信小程序带动画弹窗组件使用方法详解


Posted in Javascript onNovember 27, 2018

本文实例为大家分享了微信小程序带动画弹窗的具体代码,供大家参考,具体内容如下

基本效果如下:

微信小程序带动画弹窗组件使用方法详解

具体实现如下:

第一步:

新建一个 components 文件夹,用于存放我们以后开发中的所用组件,在 components 组件中新建一个popup文件夹来存放我们的弹窗组件,在popup下右击新建 Component 并命名为 popup 后,会生成对应的 json wxml wxss js 4个文件,也就是一个自定义组件的组成部分,此时项目结构应该如下图所示:

微信小程序带动画弹窗组件使用方法详解

第二步上代码:

popup.wxml

<view hidden="{{!flag}}" class='container' style=''>
 <view bindtap='_error' class='wrap {{wrapAnimate}}' style='background:rgba(0,0,0,{{bgOpacity}});'></view>
 <view class='popup-container {{popupAnimate}}'>
 <view class="wx-popup-title">{{title}}</view>
 <view class="wx-popup-con">{{content}}</view>
 <view class="wx-popup-btn">
  <text class="btn-no" bindtap='_error'>{{btn_no}}</text>
  <text class="btn-ok" bindtap='_success'>{{btn_ok}}</text>
 </view>
 <image bindtap='_error' src='../../image/close.png' mode='widthFix' class='btn-colse'></image>
 </view>
</view>

popup.wxss

.container{font-size:15px;color:#666;font-weight: bold;z-index:2;position:fixed;width:100vw;height:100vh;}
.wrap{position:fixed;top:0;left:0;bottom:0;right:0;}
.popup-container {position: fixed;left: 50%;top: 100%;width: 80%;max-width: 600rpx;border: 2rpx solid #ccc;border-radius: 10rpx;box-sizing: bordre-box;transform: translate(-50%, -50%);background: #fff;opacity: 0;}
.wx-popup-title {width: 100%;padding: 20rpx 0;text-align: center;font-size: 40rpx;border-bottom: 2rpx solid #89cfea;}
.wx-popup-con {margin: 60rpx 10rpx;text-align: center;}
.wx-popup-btn {display: flex;justify-content: space-around;margin-bottom: 40rpx;}
.wx-popup-btn text {display: flex;align-items: center;justify-content: center;width: 30%;height: 88rpx;border: 2rpx solid #ccc;border-radius: 88rpx;}
.btn-colse{width:35px;height:35px;position:absolute;bottom:-60px;left:50%;margin-left:-17.5px;}
.wrapAnimate{animation: wrapAnimate 1s linear forwards}
@keyframes wrapAnimate{
 0%{}
 100%{background:rgba(0,0,0,0.7);}
}
.wrapAnimateOut{animation: wrapAnimateOut 1s 0.2s linear forwards}
@keyframes wrapAnimateOut{
 0%{background:rgba(0,0,0,0.7);}
 100%{background:rgba(0,0,0,0);}
}
.popupAnimate{animation: popupAnimate 1.2s linear forwards}
@keyframes popupAnimate{
 0%{}
 60%{top:47%;opacity: 1;}
 80%{top:53%;opacity: 1;}
 100%{top:50%;opacity: 1;}
}
.popupAnimateOut{animation: popupAnimateOut 1.2s linear forwards}
@keyframes popupAnimateOut{
 0%{top:50%;opacity: 1;}
 20%{top:47%;opacity: 1;}
 100%{}
}

popup.js

Component({
 options: {
 multipleSlots: true // 在组件定义时的选项中启用多slot支持
 },
 /*组件的属性列表*/
 properties: {
 title: {
  type: String,
  value: '标题'
 },
 // 弹窗内容
 content: {
  type: String,
  value: '内容'
 },
 // 弹窗取消按钮文字
 btn_no: {
  type: String,
  value: '取消'
 },
 // 弹窗确认按钮文字
 btn_ok: {
  type: String,
  value: '确定'
 }
 },
 /* 组件的初始数据 */
 data: {
 flag: true,
 bgOpacity:0,
 wrapAnimate:'wrapAnimate',
 popupAnimate:'popupAnimate'
 },
 /* 组件的方法列表 */
 methods: {
 //隐藏弹框
 hidePopup: function () {
  const that = this;
  this.setData({ bgOpacity: 0.7, wrapAnimate: "wrapAnimateOut", popupAnimate:"popupAnimateOut"})
  setTimeout(function(){
  that.setData({flag: false})
  },1200)
 },
 /* 内部私有方法建议以下划线开头 triggerEvent 用于触发事件 */
 _error() {//触发取消回调
  this.triggerEvent("error")
 },
 _success() {//触发成功回调
  this.triggerEvent("success");
 }
 }
})

popup.json

{
 "component": true,
 "usingComponents": {}
}

第三步引用组件:

index.json

{
 "usingComponents": {
 "popup":"/components/popup/popup"
 }
}

index.wxml

<popup
 id='popup'
 title='弹窗组件'
 content='学会了吗'
 btn_no='没有'
 btn_ok='学会了'
 binderror="_error"
 bindsuccess="_success"
 >

</popup>

index.js

Page({
 showPopup() {
 this.popup.showPopup();
 },
 //取消事件
 _error() {
 console.log('你点击了取消');
 this.selectComponent("#popup").hidePopup();
 },
 //确认事件
 _success() {
 console.log('你点击了确定');
 this.selectComponent("#popup").hidePopup();
 }
})

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

Javascript 相关文章推荐
JS 控制非法字符的输入代码
Dec 04 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
Dec 12 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
跟我学习JScript的Bug与内存管理
Nov 18 Javascript
Web前端框架bootstrap实战【第一次接触使用】
Dec 28 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
Jquery动态列功能完整实例
Aug 30 jQuery
JS实现排行榜文字向上滚动轮播效果
Nov 26 Javascript
微信小程序实现日历功能
Nov 27 #Javascript
微信小程序实现打卡日历功能
Sep 21 #Javascript
微信小程序实现时间预约功能
Nov 27 #Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 #Javascript
微信小程序自定义底部导航带跳转功能
Nov 27 #Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 #Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 #jQuery
You might like
PHP中使用curl入门教程
2015/07/02 PHP
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
大学生专科学习生活的自我评价
2013/12/07 职场文书
毕业生实习鉴定
2013/12/11 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
安全生产专项整治方案
2014/05/06 职场文书
幼儿园见习报告
2014/10/30 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
少先队中队工作总结
2015/08/14 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle