<!-- 中间名单d窗 -->
<view class="drawer_div">
<view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view>
<view animation="{{animationPrize}}" class="drawer_box" wx:if="{{showModalStatus}}">
<view class="drawer_title">
中奖记录
<image src="../img/x@2x.png" bindtap="powerDrawer" data-statu="close"></image>
</view>
<view class="drawer_content">
<view class="top grid">
<text>
名称:啦啦啦啦啦啦啦啦
</text>
<text>
时间:2020-02-20
</text>
</view>
<view class="top grid">
<text>
名称:啦啦啦啦啦啦啦啦
</text>
<text>
时间:2020-02-20
</text>
</view>
</view>
</view>
</view>
.drawer_screen {
width: 100%
height: 100%
position: fixed
top: 0
left: 0
z-index: 1000
background: #000
opacity: 0.5
overflow: hidden
}
/*content*/
.drawer_box {
width: 650rpx
overflow: hidden
position: fixed
top: 50%
left: 0
z-index: 1001
background: #FAFAFA
margin: -150px 50rpx 0 50rpx
border-radius: 3px
}
.drawer_title{
padding:30rpx 20rpx
font-size: 36rpx
text-align: center
position: relative
}
.drawer_title image{
display: inline-block
width: 30rpx
height: 30rpx
position: absolute
right: 9px
top: 10px
}
.drawer_content {
height: 210px
overflow-y: scroll /*超出父盒子高度可滚动*/
padding: 0 20rpx
}
.top{
display: flex
justify-content: space-between
border-bottom: 1px dashed #ccc
}
.top text{
display: inline-block
height: 60rpx
line-height: 20rpx
}
data: {
animationPrize: {},
}
powerDrawer: function (e) {
// console.log(e)
let currentStatu = e.currentTarget.dataset.statu
this.util(currentStatu)
},
util: function (currentStatu) {
/* 动画部分 */
// 第1步:创建动画实例
var animation = wx.createAnimation({
duration: 200, //动画时长
timingFunction: "linear", //线性
delay: 0 //0则不延迟
})
// 第2步:这个动画实例赋给当前的动画实例
this.animation = animation
// 第3步:执行第一组动画
animation.opacity(0).rotateX(-100).step()
// 第4步:导出动画对象赋给数据对象储存
this.setData({
animationPrize: animation.export()
})
// 第5步:设置定时器到指定时候后,执行第二组动画
setTimeout(function () {
// 执行第二组动画
animation.opacity(1).rotateX(0).step()
// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
this.setData({
animationPrize: animation
})
//关闭
if (currentStatu == "close") {
this.setData({
showModalStatus: false
})
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
this.setData({
showModalStatus: true
})
}
},
微信小程序动态显示和隐藏某个控件新手教程。在小程序的开发过程中,经常需要用到隐藏某个控件这种情况。因为项目原本是需要将两个canvas切换,但是小程序的canvas支持的功能实在是少,本来就jQuery mobile或者将canvas转为图片就可以很容易实现滑动效果,但是都不支持,最后只能是做一个canvas,需要时显示,不需要时隐藏。
实现方法:
logs.wxml
?
123456
<view> <button bindtap="onChangeShowState">{{showView?'Click To Check IdleReason':'Click To Check MTStatus'}}</button></view><view class="{{showView?'bright789_view_show':'bright789_view_hide'}}"> <canvas canvas-id="pieCanvas1" ></canvas></view>
logs.js
?
123456789101112131415
Page({ data: { showView: true }, onLoad: function (options) { // 生命周期函数--监听页面加载 showView: (options.showView == "true" ? true : false) } , onChangeShowState: function () { var that = thisthat.setData({ showView: (!that.data.showView) }) }, })
logs.wxss
?
123456
.bright789_view_hide{ display: none} .bright789_view_show{ display: block}
从上面三个页面的文件可以很明显看出逻辑:logs.wxml的onChangeShowState按钮会在logs.js中触发一个事件,它会改变showView的值,而在logs.wxml中会根据showView的值确定画布canvas的class属性,而在logs.wxss中具体再设置两个class属性哪个是否显示
js负责页面与用户的交互,动态修改页面的内容。使用js脚本来处理用户的 *** 作。
*** 作解释: 点击button按钮(点我),修改界面的msg显示为"BeiJing佩奇"
绑定事件: bindtap定义了"点击事件"
j s 函数: Page({定义函数对应bindtap})
例如开头示例一样,组件绑定事件,js编写事件函数。
这里大概介绍下log打印的内容
☞ 小生不才,附上 博客地址☜
事件分为冒泡事件和非冒泡事件
1.冒泡事件:当一个组件被触发后,该事件以此向父节点传递。
2.非冒泡事件:当一个组件触发后,该事件不会向父节点传递。
解释:当点击子节点时,会依次触发"bind事件2,bind事件1"
解释:当点击子节点时,只触发"bind事件2",而没有触发"bind事件1"
自基础班1.5.0起,触摸类事件支持捕获阶段。捕获阶段位于冒泡阶段之前。事件到达节点的顺序与冒泡相反。捕获事件采用的关键字为capture-bind、capture-catch,当然catch还是中断,取消冒泡阶段。
1. 示例1,执行顺序为hand2,hand4,hand3,hand1
2. 示例2,加入capture-catch捕获事件,只执行hand2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)