微信小程序开发之——自定义modal弹窗

2.gif

最近开会,由于老总有提及过可能会开发小程序。故本人在会后自主学习研究如何做小程序。
首先先谢谢微信小程序开发团队提供的详细文档,以及网上各个撸友提供的js、html、css相关的知识供本人参考学习。
在做小程序之前,我是撸OC的。 虽然有学过H5基础。但是也只是停留在认识,造写easy demo的程度。但是通过这次的项目实战,我对H5相关语法有了更深的理解和认知。
好了,下面 show my code——>
wxml部分代码

<!--尺码按钮  -->
<text class='size' bindtap='showSizeList'>{{size_name}}</text>
<!--遮罩  -->
<view class='mask-view' wx:if='{{showModalStatus}}' bindtap='hiddenSizeList' animation="{{animation_mask}}"></view>
<!-- 尺码列表  -->
<view class='size-list' animation="{{animation}}">
 <!-- 默认的尺码数据  -->
 <block wx:for="{{colors[0].size}}" wx:key="colors">
  <!-- item  -->
  <view class='size-item' bindtap='selectedSize' data-index='{{index}}' data-size='{{item.size}}'>{{item.size}}</view>
  <view class='bottom-line' style='height: 1px; width: 100%; margin-top:0px;background-color: #f1f1f1;'></view>
 </block>
</view>

wxss部分代码

.mask-view {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  background: #000;
  opacity: 0; 
}

.size-list {
  width: 100%;
  height: 0rpx;
  position: fixed;
  bottom: 100rpx;
  left: 0;
  opacity: 0.9;
  background: #fff;
  
}
.size-item {
  width: 100%;
  height: 40px;
  line-height: 40px;
  padding-left: 50rpx;
  font-size: 14px;
  font-weight: bold;
  
}

关键来啦!!! JS部分代码 包括动画特效及交互中的数据传递

Page({
  /**
   * 页面的初始数据
   */
  data: {
    colors: null, //尺码相关数据
    size_name: "尺码", // 按钮默认名
    animation: {}, // 动画
    animation_mask: {}, // 动画
    showModalStatus: false, // modal是否需要渲染
  },
  // 尺码按钮交互事件
  showSizeList: function(e) {
    // 展示尺码列表
    this.modalSizeList()
  },
  // 隐藏尺码列表
  hiddenSizeList: function(e) {
    var that = this;
    this.animation_list.height(0).step()
    this.animation_mask.opacity(0).step()
    that.setData({
      animation: this.animation_list.export(),
      animation_mask: this.animation_mask.export()
    })
    // 设置定时器 500ms后移除遮罩
    setTimeout(function () {
      // 渲染遮罩
      that.setData({
        showModalStatus: false
      })
    }, 500)
  },
// 选中尺码
  selectedSize: function (e) {
    console.log(e)
    var size = e.target.dataset.size.split("|")[0]
    this.setData({
      size_name: size
    })
    this.hiddenSizeList()
  },
  // 展示尺码列表
  modalSizeList: function () {
    var that = this;

    this.animation_list = wx.createAnimation({
      duration: 500,
      timingFunction: 'ease',
    })
    this.animation_mask = wx.createAnimation({
      duration: 200,
      timingFunction: 'linear',
    })
    if (!this.data.showModalStatus) { // 未渲染 展示尺码列表
      // 渲染遮罩
      this.setData({
        showModalStatus: true
      })
      // 当前选中款色所拥有的所有尺码
      var height = 41 * this.data.colors[0].size.length
      this.animation_list.height(height).step()
      this.animation_mask.opacity(0.2).step()
      that.setData({
        animation: that.animation_list.export(),
        animation_mask: that.animation_mask.export()
      })
    } else {  // 已渲染 隐藏尺码列表
      this.animation_list.height('0rpx').step()
      this.animation_mask.opacity(0).step()
      that.setData({
        animation: that.animation_list.export(),
        animation_mask: that.animation_mask.export()
      })
      // 延迟500ms 执行
      setTimeout(function () {
        // 渲染遮罩
        this.setData({
          showModalStatus: false
        })
      }, 500)
    }
  },
})

通过这半个月来一边学习一边实战的过程,个人感觉。跨语言去实现一些实际的需求,虽然有难度。但是并没有想象的那么难。毕竟现在是信息化时代,不懂的网上都有。足够你完成项目需求了。但是如果想要掌握其精髓,那还是需要下一番功夫的。

OK,代码和个人感悟都BB了一通。最后如果有问题或者建议,希望各位看客留言讨论!~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容