微信小程序 联动 php,微信小程序实现左右联动的实战记录

前言

最近在学习小程序,实现了左右联动的功能,记录一下思绪,方便以后参考。

最终的界面如下, 点击左边任意一个项目,右边会跳到相应项目的起始位置,右边滑动,左则会跳到相应的位置。

b456a387528d91b4c85ba09959b2cdf8.png

18eb8e03bfdb54a2baa72037b63137be.png

实现思路

在这里,右则每一项的高度都是固定的,方便定位当前滑动距离在哪一个大项(左则)里。右则的 scroll-view 使用了一项关键的属性:scroll-into-view,这个属性用来确定 scrollTop 的值的,当 scroll-into-view 的值和 scroll-view 里面的元素的id的值相等时,scroll-view 会定位到该元素,scrollTop 的值就是滑动到该元素的值。

做这个功能的时候,遇到一个问题,就是右则的小项种类不多的时候,例如某个类目只有1~2个,那么点击左则的大项的时候,会出现点击不到的现象。这里可以用点小技巧来解决:

点击左则大项的时候,设置当前点击标记为true,设置 classifySeleted 为当前点击的项目。 然后在滑动触发函数(onGoodsScroll)里面,判断当前触发滑动是否点击产生的,如果是,则不设置 classifySeleted  的值,否则就计算 classifySeleted 的值并设置。

示例代码:

wxml代码如下:

{{classify.typeName}}

{{classify.typeName}}

{{cake.name}}

{{cake.introduce}}

¥{{cake.price}}

js代码如下:

onGoodsScroll: function (e) {

var scrollTop = e.detail.scrollTop;

var h = 0;

var classifySeleted = this.data.classifySeleted;

var titleHeight = Math.ceil(70 * this.data.percent);

var itemHeight = Math.ceil(180 * this.data.percent);

this.data.cakeTypes.forEach(function (classify, i) {

console.log("h:" + h + " scrollTop:" + scrollTop);

var _h = titleHeight + classify.productIds.length * itemHeight;

if (scrollTop >= h - 10) {

classifySeleted = classify.typeId;

}

h += _h;

});

if (this.data.isTap) {

this.setData ({

isTap: false

})

} else {

this.setData({

classifySeleted: classifySeleted

});

}

},

tapClassify: function (e) {

var id = e.target.dataset.id;

this.setData({

isTap: true,

classifySeleted: id,

typeIndex: id

});

},

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值