微信小程序列表渲染点击增添或移除类以改变

本文介绍了一个使用WXML和WXSS实现的导航栏交互效果案例。点击导航栏时,选中项的文字颜色变为橙色并出现下划线。通过JS控制样式切换,并在下方展示相应的订单状态。适用于小程序开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求是这样的:

要做成这样的效果:当点击上面的导航栏时颜色会变成橙色,下面多出一条下划线,不点时默认是第一个。当然下面也会随之发生变化(需要从后台获取数据后渲染,这里默认暂无订单)。

wxml 代码如下:

<view class='header'> <!--头部菜单-->
  <view bindtap='checkCloumn' wx:for="{{datas}}" data-key='{{index}}' class='headColumn                         
 {{item.state==1?"active":""}}'>
    <text>{{item.name}}</text> 
  </view>
</view>
 <!--图片和暂无订单-->
<view class='orderBody'>
  <image src='../../images/zanwudingdan.png'></image>
  <view class='noOrder'>暂无订单</view>
</view>

wx:for 是循环。循环渲染{{datas}} 里的数据。 data-key ="{{index}}",每条数据里的data-key都不一样,分别为 0,1,2,3。

后面的 e.currentTarget.dataset.key  就是分别获得每次点击的data-key。

js:

data: {
    datas:[
      {name:"全部",state:"1"}, //数据渲染,将第一个设置为默认的active。
      { name: "代付款",state:"0" },
      { name: "可使用", state: "0" },
      { name: "退款/售后", state: "0"}
    ]
  },
  checkCloumn:function(e){  //点击事件
    for(var i =0;i<this.data.datas.length;i++){
      this.data.datas[i].state=0
    }  //循环让 state =0,也是移除 active 类。
    var index = e.currentTarget.dataset.key; 
    // console.log(index);
    this.data.datas[index].state=1; //点击使 state=1 ,也是添加 active 类。
    this.setData({
      datas:this.data.datas
    })
  },

wxss:

page{
  background: #f8f8f8;
}
.header{
  width: 100%;
  height: 100rpx;
  overflow: hidden;
  background: #fff;
  box-shadow: #ddd 2px 4px 20px;
}
.header .headColumn{
  width: 25%;
  height: 100rpx;
  line-height: 100rpx;
  float: left;
  font-size: 28rpx;
  color: #333;
  text-align: center;
}
.header .headColumn text{
  padding: 30rpx 0;
}
.header .active text{
  color: #ff6336;
  border-bottom:solid #ff6336 1px;
}
.orderBody{
  width: 200rpx;
  height: 200rpx;
  margin: 200rpx auto;
  overflow: hidden;
}
.orderBody image{
  width: 200rpx;
  height: 150rpx;
}
.orderBody .noOrder{
  text-align: center;
  color: #666;
  font-size: 28rpx;
  /* margin-top: 20rpx; */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值