微信小程序(应用号)微信小程序开发微信小程序

微信小程序(一)多个按钮选中的联动效果

2017-10-19  本文已影响273人  二木又土
demo.gif

场景:画图应用需选择画笔颜色,有4种颜色按钮可供选择,用户点击任意按钮进行颜色切换。
思路:通过curColorIndex变量保存当前选中的颜色下标,选中后添加额外的选中样式

一,canvas.wxss文件:这个文件用于定义按钮正常态和选中态的样式,以及Flex

布局的约束

/*容器布局*/
.color_right_area {
    margin-top: 30rpx;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-around;
}
/*正常效果:圆形*/
.box {
    width: 45rpx;
    height: 45rpx;
    border-radius: 50%;
    background-color: rebeccapurple;
}
/*选中效果:带边框*/
.is_checked {
    width: 47rpx;
    height: 47rpx;
    border: 2px solid;
}
/*按钮颜色样式*/
.color0 {
    background-color: #d5243e;
}
.color1 {
    background-color: #318ff4;
}
.color2 {
    background-color: #f9a23f;
}
.color3 {
    background-color: #000;
}
二,canvas.wxml文件:这个文件是Demo的布局界面,通过使用js的data数据和wxss的class样式进行页面布局
<view class="color_right_area">
    <view class='color_right_area' wx:for='{{data_color}}' wx:key='id'>
        <view class="box color{{index}} {{curColorIndex==index?'is_checked':'color{{index}}'}}" bindtap="colorSelect" data-param='{{index}}'></view>
    </view>
</view>

这里通过wx:for实现循环打印颜色数组,通过curColorIndex值控制选中的样式,index值进行参数传递

三,canvas.js文件:提供数据,以及处理xwml的控件响应,并通过设置this.setData的值来更新xwml的显示
Page({
    data: {
        curColorIndex:0, 
        data_color: [],
    },
    //更改画笔颜色的方法
    colorSelect: function (e) {
        let curIndex = parseInt(e.currentTarget.dataset.param)
        this.setData({
            curColorIndex: curIndex
        });
    },
    onLoad: function () {
        let init_color = [
            '#d5243e',
            '#318ff4',
            '#f9a23f',
            '#ffffff'
        ]
        this.setData({ data_color: init_color})
    }
})

onLoad:function这个函数在页面加载时就会执行一次,所以这里可以加载默认颜色数据,同时wxml用到了curColorIndex以及data_color,所以在data里定义。


32424.jpg
上一篇 下一篇

猜你喜欢

热点阅读