微信小程序实现 item点击变色的多种方式

1:wxs实现 多个item点击变色 并且保持之前的不变

效果图:

思路1:for循环渲染item
           给点击的元素添加active标签
           多个元素使用wxs语法判断 active标签数组中是否存在点击的index
                思路2:如果只允许同时只存在一个元素变色 就不需要使用wxs 直接把{{utility.isActive(salaryState,index)}}
改为{{state==index?'active':' '}}
思路3:如果在2的基础上 只需要短暂变色 使用微信:hover语法即可 

wxml: 

<view class="salary">
    <van-row>
        <van-col span="23" offset="1">期待薪资<van-icon name="arrow-down" /></van-col>
    </van-row>
    <van-row class="tags">
      <van-col span="4" offset="{{index%4 == 0 ? 0 : 2}}" wx:for="{{job_salarys}}" wx:for-item="salary" wx:key="index">
        <view  class="tag {{utility.isActive(salaryState,index)}}"  data-key="{{index}}" bindtap="salaryActiveType">
          {{salary.dictLabel}}
        </view>
      </van-col>
    </van-row>
</view>

 wxss:

.salary {
    margin-top: 40rpx;
    padding: 20rpx 40rpx;
}
 
.tag {
    text-align: center;
    width: 140rpx;
    height: 60rpx;
    line-height: 60rpx;
    margin: 20rpx 20rpx;
    font-size: 24rpx;
    color: #000000;
    background-color: #ffffff;
    border-radius: 14rpx;
    font-weight: bold;
  }
 
.active-tag {
    background-color: rgb(36, 0, 241);
}

 wxs:

import {getDict} from '../../../../apis/dict';
Page({
 
    /**
     * 页面的初始数据
     */
    data: {
        job_salarys:[],
        salaryState: []
    },
 
    getDict(data) {
        getDict(data).then((res)=>{
            console.log(res);
            let that = this;
            if(res.code==200) {
            that.setData({
                job_salarys: res.data
            })
            }
        })
    },
 
    salaryActiveType(e) {
        let Nowstate = this.data.salaryState
        let key = e.currentTarget.dataset.key
        if (Nowstate.indexOf(key)>-1) {
            Nowstate.splice(Nowstate.indexOf(key), 1)
        }else {
            Nowstate.push(key);
        }
        
        this.setData({
            salaryState: Nowstate
        })
        console.log(this.data.salaryState);
    },
 
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.getDict('job_salary');
    },
<!-- 工具方法 -->
<wxs module="utility">
  function isActive(array,index) {
   if(array.indexOf(index)>-1) {
     return 'active-tag';
   }else {
     return '';
   }
  }
 
  module.exports.isActive = isActive;
</wxs>

 js:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耀南.

你的鼓励将是我最最最最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值