列表點選更改樣式
這一篇部落格是在上一篇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;
}