微信小程序实现左右列表联动

本文实例为大家分享了微信小程序实现左右列表联动的具体代码,供大家参考,具体内容如下

效果图:

直接上代码:

wxml界面:

<view class='header'>
<text class='headerClass'>分类</text>
<text class='headerPin'>/品牌</text>
<view class="search">

<image src='/images/搜索.png'></image>
<text>搜索商品</text>
</view>
</view> 

<view class='main'>
 <view class='left'>
 <scroll-view scroll-y="true" style="height: 1100rpx" scroll-into-view="true" scroll-with-animation="true">
 <block wx:for="{{leftText}}" wx:for-list="item">
 <view class="{{classfiySelect == item.id?'active':''}}" data-id='{{item.id}}' bindtap='left_list'>
 <text>{{item.text1}}</text>

</view>
</block>
</scroll-view>
</view>

<view class='right'>
<scroll-view scroll-y="true" style="height: 1100rpx" bindscroll="scroll" scroll-top="{{scrollTop}}" scroll-into-view="{{'inToview'+rigId}}" scroll-with-animation="true">
<block wx:for="{{rightData}}" wx:for-list="item">
<view class='itemTitle' id="{{'inToview'+item.id}}">{{item.title}}</view>
<view bindtap='particulars' class='listItem' data-id='{{item.id}}'>

<block wx:for="{{item.frist}}">
<view class='listItem2' data-text="{{}}">
<view class='img'>
<image src='{{item.url}}'></image>

</view>
<view class='listText'>
<text>{{item.text}}</text>
<text class='money'>¥{{item.money}}</text>
<view>
<text>已售{{item.sum}}</text>
<button size='mini' bindtap='particulars'>立即抢购</button>
</view>

</view>

</view>
</block>
</view>
</block>
</scroll-view>
</view>
</view>

js界面:

// pages/class/class.js
Page({

 /**
 * 页面的初始数据
 */
 data: {
 classfiySelect: "",
 leftText: [{
 id: "01",
 text1: "美妆专区",
 },
 {
 id: "02",
 text1: "面部清洁",
 },
 {
 id: "03",
 text1: "洗护专区",
 },
 {
 id: "04",
 text1: "面膜",
 },
 {
 id: "05",
 text1: "口红",
 },
 {
 id: "06",
 text1: "美妆专区",
 },
 {
 id: "07",
 text1: "面部清洁",
 },
 {
 id: "08",
 text1: "洗护专区",
 },
 {
 id: "09",
 text1: "面膜",
 },
 {
 id: "010",
 text1: "口红",
 },
 {
 id: "011",
 text1: "美妆专区",
 },
 {
 id: "012",
 text1: "面部清洁",
 },
 {
 id: "013",
 text1: "洗护专区",
 },
 {
 id: "014",
 text1: "面膜",
 },
 {
 id: "015",
 text1: "口红",
 },
 {
 text1: "美妆专区",
 },
 {
 text1: "面部清洁",
 },
 {
 text1: "洗护专区",
 },
 {
 text1: "面膜",
 },
 {
 text1: "口红",
 },

 ],
 rightData: [{
 id: "01",
 title: "美妆专区",
 frist: [{
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  id:1,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  id: 2,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
 ],
 },
 {
 id: "02",
 title: "面部清洁",
 frist: [{
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
 ],
 },
 {
 id: "03",
 title: "洗护专区",
 frist: [{
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
 ],
 },
 {
 id: "04",
 title: "面膜",
 frist: [{
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
 ],
 },
 {
 id: "05",
 title: "口红",
 frist: [{
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
 ],
 },
 {
 id: "06",
 title: "美妆专区",
 frist: [{
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
  {
  url: "/images/85309.jpg",
  text: "卡姿兰补水套装",
  money: 200,
  sum: 20,
  },
 ],
 },
 ],
 },

 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function(options) {
 this.setData({
 classfiySelect: this.data.leftText[0].id
 })
 },

 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function() {

 },

 /**
 * 生命周期函数--监听页面显示
 */
 onShow: function() {

 },

 /**
 * 生命周期函数--监听页面隐藏
 */
 onHide: function() {

 },

 /**
 * 生命周期函数--监听页面卸载
 */
 onUnload: function() {

 },

 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function() {

 },

 /**
 * 页面上拉触底事件的处理函数
 */
 onReachBottom: function() {

 },

 /**
 * 用户点击右上角分享
 */
 onShareAppMessage: function() {

 },
 //滚动触发
 scroll: function(e) {
 var scrollTop = e.detail.scrollTop,
 h = 0,
 classfiySelect;
 var that = this;
 that.data.leftText.forEach(function(clssfiy, i) {
 var _h =26 + that.length(clssfiy['id'])*102;
 if (scrollTop >= h){
 classfiySelect = clssfiy['id'];
 }
 h +=_h;
 console.log(h);
 })
 that.setData({
 classfiySelect: classfiySelect,
 })
 },
 //求每一栏高度
 length: function(e) {
 var that = this;
 var rightData = that.data.rightData;
 for (var i = 0; i < rightData.length; i++) {
 if(rightData[i]['id']==e){
 return rightData[i]['frist'].length;

 }
 }
 },
 //点击左边事件
 left_list: function(e) {
 var that = this;
 var l_id = e.currentTarget.dataset.id;
 that.setData({
 rigId: l_id,
 })
 },
 //跳转详情界面
 particulars:function(e){

 }
})

wxss界面:

.header{
 display: flex;
 background-color: rgba(219, 219, 221, 0.884);
 align-items: center;
 height: 60rpx;
}
.active{
 color: red;
}
.header .headerClass{
 color: red;
 margin-left: 20rpx;
}
.header .headerClass,
.header .headerPin{
 font-size: 28rpx;
}
.search{
 display: flex;
 height: 46rpx;
 border-radius: 20rpx;
 margin-left: 30rpx;
 background-color:white;
 width: 70%;
}
.search text{
 color: gainsboro;
 font-family: monospace;
 font-size: 30rpx;
 line-height: 46rpx;

}
.search image{
 padding-left:50rpx;
 width: 46rpx;
 height: 46rpx;
}
.main{
 display: flex;
}
.left{
 width: 25%
}
.left view{
 padding-top: 30rpx;
 text-align: center;
}
.right{
 width: 75%;
}

.listItem2{
 display: flex;
}
.listItem .img{
 width: 200rpx;
 height: 200rpx;
 text-align: center;
 padding-top: 10rpx;
}
.listItem .img image{
 width: 80%;
 height: 80%
}
.itemTitle{
 font-size: 32rpx;
 padding-left: 20rpx;
 padding-top: 10rpx;
 color:gray;
}
.listItem .listText{
 display: flex;
 flex-direction: column;
 margin-top: 6rpx;
}
.listItem .listText view{
 display: flex;
 align-items: flex-end;
}
.listItem .listText text{
 font-size: 34rpx;
 margin-top: 10rpx;
}
.listItem .listText .money{
 color: red;
}
.listItem .listText view text{
 font-size: 28rpx;
 color :silver;
 margin-right: 60rpx;
}
.listItem .listText view button{
 background-color: red;
 color: white;
 padding-right: 8px;
 padding-left: 8px;
 padding-top: 0px;
}
::-webkit-scrollbar
{
width: 6px;
height: 6px;
background-color: #ffffff;
}
::-webkit-scrollbar-track{
 height: 20rpx;
 color: black;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序实现展示评分结果功能

    本文实例为大家分享了微信小程序实现展示评分结果的具体代码,供大家参考,具体内容如下 星星评分展示1 根据评分展示整颗行星或者半颗星星 星星评分展示2 根据评分按照小数点展示整颗行星或者部分星星 wxml <view class="conmmentbox"> <view class="starbox"> <view class="stars2" style="width: 130rpx"> &

  • 微信小程序时间标签和时间范围的联动效果

    本文实例为大家分享了微信小程序时间标签和时间范围联动的具体代码,供大家参考,具体内容如下 最近忙于一个有关数据管理的微信小程序,遇到了上图情况,虽然很简单,还是整理一下.若有错误,请广大朋友们指正. 使用微信小程序组件radio-group.picker,用wxss对radio按照需求进行重构,picker里边的start和end时间是根据radio来显示的.将start.end时间放在data里,radio发生改变时,改变data中的时间.当picker中的值发生改变时,如果时间范围已经超出了

  • 微信小程序实现商品属性联动选择

    本文实例为大家分享了微信小程序实现商品属性联动选择的具体代码,供大家参考,具体内容如下 效果演示: 代码示例 1.commodity.xml <!-- <view class="title">属性值联动选择</view> --> <!--options--> <view class="commodity_attr_list"> <!--每组属性--> <view class="a

  • 微信小程序实现联动选择器

    本文实例为大家分享了微信小程序实现联动选择器的具体代码,供大家参考,具体内容如下 picker 从底部弹起的滚动选择器,现支持五种选择器,通过mode来区分,分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器. 先来看看效果图: 1.普通选择器 mode = selector(默认的) <view class='picker'>普通选择器</view> <!-- value: value值表示选择了让的第几个,index===下标 从0开始

  • 微信小程序实现多个按钮的颜色状态转换

    本文实例为大家分享了微信小程序实现按钮颜色状态转换的具体代码,供大家参考,具体内容如下 效果图片: index.wmxl文件 <block wx:for="{{pres}}"> <view class='foot_tab' data-id="{{index}}" style="{{index==id? 'color:rgb(91, 207, 97)':'color:#ddd'}}" bindtap='changeColor'&g

  • 微信小程序在安卓的白屏问题原因及改进讲解

    在做小程序的时候,做到了一个限时商品售卖,用到了倒计时,因为这个原因导致了安卓手机上使用小程序时,将小程序放入后台运行一段时间后,再次进入小程序后出现了页面白屏或者点击事件失效的情况,这里记录下 1.相关代码文件 我这里是使用了自定义组件的形式来渲染的 外部的引用的自定义组件的wxml文件 /* limitCommodity是一个数组,返回的是商品对象,包含商品价格.商品结束时间.商品图片等 */ <block wx:for="{{limitCommodity}}" wx:key

  • 微信小程序实现购物页面左右联动

    本文实例为大家分享了微信小程序实现购物页面左右联动的具体代码,供大家参考,具体内容如下 效果图: wxml <view class="pro-container"> <scroll-view class="left-menu" scroll-y scroll-with-animation="true" scroll-top="{{leftMenuTop}}"> <view class="

  • 微信小程序基于picker实现级联菜单

    本文实例为大家分享了微信小程序实现级联菜单的具体代码,供大家参考,具体内容如下 <view > <picker bindchange="bindPickerChange0" value="{{brandindex}}" range="{{brands}}"> <view class="picker"> 品牌:{{brands[brandindex]}} </view> </

  • 解决微信小程序中转换时间格式IOS不兼容的问题

    昨天弄一个微信倒计时;遇到了这个为题,调试了才找到问题的所在,然后在网上找了资料才知道这个问题的原因,来是因为IOS系统不支持2018-08-30这样的格式的时间导致的 let olddata ='2018-08-30 11:00:00'; let mydata=new Date(olddata); console.log(mydata); let newdata=mydata.getTime(); 这样的代码安卓手机开发手机和微信小程序编辑器测试都没有问题,唯独IOS获取的日期为不显示,原来I

  • 微信小程序实现工作时间段选择

    本文实例为大家分享了微信小程序工作时间段选择的具体代码,供大家参考,具体内容如下 1. 效果图如上,需完成时间段的选择  以及下面的工作日选择  保存按钮为formSubmit提交后台 2.思路: ①时段用picker跟input  如果没有占位字符  则不需要input ②工作日选择用checkbox  多选的样式用label  将checkbox隐藏 ③label的选择后的样式跟取消的样式,这里无需判断checked  当然也可以判断checked  我这里的方法是,先建一个放星期一到星期天

随机推荐