这一篇博客是在上一篇gridview的基础上改的。属于功能增加,有兴趣的可以看看
https://mp.csdn.net/postedit/82750123
其实点击更改样式的逻辑很简单,就是判断点击的时候加个判断即可。
1,xml
<!--utils/gv/gv.wxml-->
<view class="gridview" style='background:white;'>
<view class="gridview-item" wx:for="{{list}}" wx:key="name">
<view class='gridview-item__bg'>
<view class="gridview-item__view" id='{{index}}' bindtap='onclick'>
//在这里添加判断如果是点击了就显示一个布局,否则显示别的布局
<block wx:if="{{index==clickId}}">
<view class='onclicks'>
<view class='item-time1'>{{item.time}}</view>
<view class='item-text1'>{{item.name}}</view>
</view>
</block>
<block wx:else>
<view class='item-time'>{{item.time}}</view>
<view class='item-text'>{{item.name}}</view>
</block>
</view>
</view>
</view>
</view>
2,js
// utils/gv/gv.js
Page({
/**
* 页面的初始数据
*/
data: {
clickId:100,//这个表示默认显示第几条为更改的布局,一般来说只有点击的时候才会显示不同的布局,所以这个暂时写100,也就是都是默认的样式,如果需要在点击之前就显示一个不同的布局,那么这个的值就是0,也就是数组的第一个。
clickItem:'',
list: [{
id: 1,
name: "大力1",
time: '10:00-18:30'
}, {
id: 2,
name: ' 大力2',
time: '10:00-17:30'
}, {
id: 2,
name: ' 大力3',
time: '10:00-16:30'
}, {
id: 2,
name: '大力4',
time: '10:00-15:30'
}, {
id: 2,
name: '大力5',
time: '10:00-14:30'
}, {
id: 2,
name: '大力6',
time: '10:00-13:30'
}, {
id: 2,
name: ' 大力7',
time: '10:00-12:30'
}],
coloritem: '',
},
onclick: function (event){
var id = event.currentTarget.id//点击的选项会改变颜色
this.setData({
clickId: id,
clickItem: this.data.list[id]
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {
}
})
3,wxss
/* utils/gv/gv.wxss */
/* 两列列表样式 start */
.gridview {
margin: 5rpx 10rpx 5rpx 10rpx;
/* 以下两个可以根据需要自己决定是留着还是去掉 *//* position: relative;
overflow: hidden; *//* gv整体的颜色 */
background: #eee;
}
.gridview:before {
content: " ";
position: absolute;
left: 0;
top: 0;
right: 0;
height: 5px;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
.gridview:after {
content: " ";
position: absolute;
left: 0;
top: 0;
bottom: 0;
/* 整体的左边距 */
border-left: 5px solid #d9d9d9;
color: #d9d9d9;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scaleX(0.5);
transform: scaleX(0.5);
}
.gridview-item {
margin: 1% 1% 1% 1%;
background: #eee;
/* 加上下面一行表示默认的分割线 *//* position: relative; */
float: left;
/* 内边距可根据实际情况添加 *//* padding: 5px 5px 5px 5px; */
width: 48%;
box-sizing: border-box;
}
.gridview-item:before {
content: " ";
position: absolute;
right: 0;
top: 0;
width: 1px;
bottom: 0;
border-right: 5px solid #d9d9d9;
color: #d9d9d9;
-webkit-transform-origin: 100% 0;
transform-origin: 100% 0;
-webkit-transform: scaleX(0.5);
transform: scaleX(0.5);
}
.gridview-item:after {
content: " ";
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 1px;
border-bottom: 1px solid #d9d9d9;
color: #d9d9d9;
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
.gridview-item:active {
background-color: #ececec;
}
.gridview-item__bg {
background: #fff;
position: relative;
float: left;
padding: 0px 0px;
width: 100%;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
height: 140rpx;
}
.gridview-item__view {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
align-items: center;
justify-content: center;
font-size: 12px;
color: #222;
background: #fff;
}
.onclicks {
border: 1rpx solid #C73E3A;
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
align-items: center;
justify-content: center;
font-size: 12px;
color: #222;
background: #fff;
}
.gridview-item__view1 {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
align-items: center;
justify-content: center;
font-size: 12px;
color: red;
background: #fff;
}
.item-time {
color: #333;
font-size: 38rpx;
}
.item-text {
margin-top: 8rpx;
color: #666;
font-size: 26rpx;
}
.item-time1 {
color: #c73e3a;
font-size: 38rpx;
}
.item-text1 {
margin-top: 8rpx;
color: #c73e3a;
font-size: 26rpx;
}