zoukankan      html  css  js  c++  java
  • 微信小程序-自定义弹出框

    <---------------------------------定义组建------------------------------------------------------------------------->

    // components/component-tag-name.js
    Component({
    options: {
    multipleSlots: true // 在组件定义时的选项中启用多slot支持
    },
    /**
    * 组件的属性列表
    */
    properties: {

    },

    /**
    * 组件的初始数据
    */
    data: {

    },

    /**
    * 组件的方法列表
    */
    methods: {
    myActionSheetCancel() {
    this.hideMyActionSheet()
    },

    showMyActionSheet: function () {
    // 显示遮罩层
    var animation = wx.createAnimation({
    duration: 200,
    timingFunction: "linear",
    delay: 0
    })
    this.animation = animation
    animation.translateY(300).step()
    this.setData({
    animationData: animation.export(),
    showModalStatus: true
    })
    setTimeout(function () {
    animation.translateY(0).step()
    this.setData({
    animationData: animation.export()
    })
    }.bind(this), 200)
    },
    hideMyActionSheet: function () {
    // 隐藏遮罩层
    var animation = wx.createAnimation({
    duration: 200,
    timingFunction: "linear",
    delay: 0
    })
    this.animation = animation
    animation.translateY(300).step()
    this.setData({
    animationData: animation.export(),
    })
    setTimeout(function () {
    animation.translateY(0).step()
    this.setData({
    animationData: animation.export(),
    showModalStatus: false
    })
    }.bind(this), 200)
    },
    }
    })
     
    json
    {
    "component": true,
    "usingComponents": {}
    }
     
    wxml
     
    <!-- 组件模板 -->
    <view class="wrapper">
    <slot name="before"></slot>
    <view class="maskLayer" bindtap="hideMyActionSheet" wx:if="{{showModalStatus}}"></view>
    <view animation="{{animationData}}" class="actionSheetLayer" wx:if="{{showModalStatus}}">
    <slot></slot>
    <view class='cancel' bindtap='myActionSheetCancel'> 取消 </view>
    </view>
    </view>
     
    wxss
    /* components/component-tag-name.wxss */
    .maskLayer {
    100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background: #000;
    opacity: 0.2;
    overflow: hidden;
    z-index: 1000;
    color: #fff;
    }

    .actionSheetLayer {
    100%;
    overflow: hidden;
    position: fixed;
    bottom: 0;
    left: 0;
    z-index: 2000;
    background: #ededed;
    }
    .play{
    100%;
    height: 98rpx;
    line-height: 98rpx;
    text-align: center;
    background: #fff;
    border-top: 1rpx solid rgba(204, 204, 204, 0.356);
    }
    .cancel{
    100%;
    line-height: 98rpx;
    height: 98rpx;
    text-align: center;
    background: #fff;
    border-top: 1rpx solid #ededed;
    margin-top: 10rpx;
    }

    <----------------------------------------引用页面------------------------------------------------------------------>

    const app = getApp()

    Page({
    data: {
    actionSheetText: ['选项1', '选项2', '选项3']
    },
    onLoad: function () {
    this.myActionSheet = this.selectComponent(".list")
    console.log(this);
    },
    showMyActionSheet() {
    console.log('click');
    this.myActionSheet.showMyActionSheet()
    },
    actionSheetIndex(e){
    console.log('当前下标:', e.currentTarget.dataset.index)
    }
    })
     
     
    JSON
     
     
    {
    "usingComponents": {
    "myActionSheet": "/component/components/component-tag-name"
    }
    }
     
    wxml
     
    <!-- 引用组件的页面模版 -->
    <view>
    <myActionSheet class='list'>
    <view slot="before" bindtap='showMyActionSheet' wx:for='{{5}}'>某图标</view>
    <view wx:for='{{actionSheetText}}' class='cancelist' bindtap='actionSheetIndex' data-index='{{index}}'>{{item}}</view>
    </myActionSheet>
    </view>
     
    wxss
     
    .intro {
    margin: 30px;
    text-align: center;
    }
    .cancel{
    100%;
    line-height: 98rpx;
    height: 98rpx;
    text-align: center;
    background: #fff;
    border-top: 1rpx solid #ededed;
    margin-top: 10rpx;
    }
    .cancelist{
    100%;
    line-height: 98rpx;
    height: 98rpx;
    text-align: center;
    background: #fff;
    border-top: 1rpx solid #ededed;
    }
  • 相关阅读:
    用户体验的时间尺度
    ibatis的xml中的dtd问题
    ASP.NET AJAX调用服务
    C#打包安装与卸载
    学习 WCF (6)学习调用WCF服务的各种方法
    C#.NET ActiveX控件的制作
    如何使用C#开发“类ActiveX组件”
    Asp.Net框架下WebService和Remoting的区别
    今天打开网站,突然发现sql 2005出现错误:数据库 'mybase_db' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
    VS部署中的ProductCode问题
  • 原文地址:https://www.cnblogs.com/lipuqing180906/p/9604489.html
Copyright © 2011-2022 走看看