这个场景一般用于展示数据时,数据过多,每条一行显示不下,表头可以横向滑动,下面要显示的数据部分横向纵向都可以滑动。表头或下面数据部分横向滑动的时候,两部分可以进行联动

具体效果像这样(随便写的丑样式布局)

说说原理,主要是使用两个scroll-view组件,然后监听两个scroll-view的滑动事件,然后根据滑动的scroll-view横向滑动的距离,通过scroll-left来设置另一个scroll-view滑动的距离

首先WXML代码:

<scroll-view style='width:100%;height:100rpx;border:1px solid #f00;' scroll-x scroll-left='{{title_x}}' bindscroll='titlebindscroll' bindtouchstart='bindtouchstart' data-types='title'>
<view style='height:300rpx;background:#00f;width:1000rpx;margin-bottom:10rpx;float:left;color:#fff;'>12122665566546546546512346846546465465466666666666666666666666644444444444488888888888888888888999999999999999995555555555555553333333333333333222222222222222777777777776666666666666666666666555555555555533333333332222222</view> </scroll-view>
<scroll-view style='width:100%;height:1000rpx;border:1px solid #f00;' scroll-x scroll-yscroll-left='{{title_x}}' bindscroll='bindscroll' bindtouchstart='bindtouchstart' data-types='data'>
<view style='height:300rpx;background:#f00;width:1000rpx;margin-bottom:10rpx;float:left;' wx:for='{{[1,1,1,11,1,1,1,1,1,11,1,1,1]}}'>12122665566546546546512346846546465465466666666666666666666666644444444444488888888888888888888999999999999999995555555555555553333333333333333222222222222222777777777776666666666666666666666555555555555533333333332222222</view> </scroll-view>

然后JS代码:

let ifs=true;//这里添加一个开关,因为在设置一个scroll的滑动距离的时候会触发这个scroll的滑动事件,从而执行里面的事件,这样会做很多多余的操作,影响性能
Page({
data: {
title_x:0
},
//在开发者工具上前几次滑动会很慢,估计几秒后另一个才会滑动,手机上不会,在手机和开发者工具上滑动的时候有大概几百毫秒延迟,可以忽略不计,我觉得是因为两个地方的滑动都要频繁的使用setData操作,所以会出现这些情况,如果大家发现是其他原因引起的、有错误或有其他好的方法,请留言,谢谢
//判断是那个部分在滑动
bindtouchstart(e){
const types=e.currentTarget.dataset.types;
ifs=(types=='title');//
console.log(ifs);
},
//下面红色部分滑动
bindscroll(e){
let move = e.detail.scrollLeft,//获取下面红色部分的横向滑动距离
title_x=this.data.title_x;
if (title_x!=move&&!ifs){//监听srcoll滑动事件,判断下面红色部分与左边的距离和蓝色部分与左边的距离是否相等,相等的话就是纵向滑动,否则就是横向滑动,只有横向滑动的时候才改变蓝色部分滑动的距离
this.setData({//这里需要实时渲染
title_x: move
});
} },
//蓝色部分滑动
titlebindscroll(e){
const move = e.detail.scrollLeft;//获取蓝色部分滑动的距离
if(ifs){
this.setData({//更新下面红色距离左边的距离,这里是滑动蓝色部分然后设置下面滑动的距离,所以要用setData进行渲染
title_x:move
});
}
},
onLoad: function (options) { } })
在开发者工具上前几次滑动会很慢,估计几秒后另一个才会滑动,手机上不会。
在手机和开发者工具上滑动的时候有大概几百毫秒延迟,可以忽略不计,
我觉得是因为两个地方的滑动都要频繁的使用setData操作,所以会出现这些情况。
如果大家发现是其他原因引起的、有错误或有其他好的方法,请留言,谢谢 想了解更多的小程序的知识请添加微信小程序开发交流群:368506119

微信小程序实现顶部、底部联动滑动的更多相关文章

  1. 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作

    图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作 什么是tabBar? 顶部或者底部tab栏如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以 ...

  2. 微信小程序中的左右联动

    微信小程序端的左右联动-滚动效果插件: 效果图如下:                                                                          ...

  3. 转载:移动端+微信小程序实现,手机端滑动分页代码思路(ajax)

    //一般在PC上我们要分页都是通过上一页和下一页来实现的,手机通过当下滑到一定程度的时候自动加载下一页面//实现思路:首先加载部分数据,当下滑到某个元素可见的时候,如果还有数据,则新发送请求,然后追加 ...

  4. 微信小程序自定义顶部导航

    注释:自定义导航需要自备相应图片 一.设置自定义顶部导航 Navigation是小程序的顶部导航组件,当页面配置navigationStyle设置为custom的时候可以使用此组件替代原生导航栏. 1 ...

  5. 微信小程序tab切换,可滑动切换,导航栏跟随滚动实现

    简介 看到今日头条小程序页面可以滑动切换,而且tab导航条也会跟着滚动,点击tab导航,页面滑动,切导航栏也会跟着滚动,就想着要怎么实现这个功能 像商城类商品类目如果做成左右滑动切换类目用户体验应该会 ...

  6. 微信小程序之自定义底部弹出框动画

    最近做小程序时,会经常用到各种弹框.直接做显示和隐藏虽然也能达到效果,但是体验性太差,也比较简单粗暴.想要美美地玩,添加点动画还是非常有必要的.下面做一个底部上滑的弹框. wxml <view ...

  7. 微信小程序之顶部固定和底部固定

    顶部固定 <view style="position:fixed;top:0;"> ...... </view> 底部固定 <view style=& ...

  8. 微信小程序回到顶部的两种方式

    一,使用view形式的回到顶部 <image src='../../img/button-top.png' class='goTop' hidden='{{!floorstatus}}' bin ...

  9. 微信小程序 使用swiper制作一个滑动导航

    最近在做一个导航的时候,发现使用overflow-x: auto来做多内容滑动导航效果很不好,思索是不是可以使用swiper来做一个,研究了下其实发现原理基本相同 这里说下,要用swiper做导航菜单 ...

随机推荐

  1. python sklearn PCA源码阅读:参数n_components的设置(设为‘mle’出错的原因)

    在介绍n_components参数之前,首先贴一篇PCA参数详解的文章:http://www.cnblogs.com/akrusher/articles/6442549.html. 按照文章中对于n_ ...

  2. 测试BUG记录模板(供参考)

    文档说明如下: Bug严重程度: A-崩溃的:由于程序所引起的死机.非法退出.死循环:数据库发生死锁:因错误操作导致的程序中断:主要功能错误:造成数据破坏丢失或数据异常:数据库连接错误:数据通讯错误. ...

  3. CSS(一) 引入方式 选择器 权重

    Css(一) Cascading Style Sheet 层叠样式表 css注释方式/*  */ 一.Css引入方式 1. 行间样式 style=" key:value; " &l ...

  4. .NET技术面试题系列(1) 基础概念

    这是.NET技术面试题系列第一篇,今天主要分享基础概念. 1.简述 private. protected. public.internal 修饰符的访问权限 private : 私有成员, 在类的内部 ...

  5. 第四章 Windows图形界面-上

    学习<Windows程序设计>记录 概念贴士: 1. 每个GUI应用程序至少应该创建一个窗口,称为主窗口,它作为用户与应用程序间的主界面来提供服务.大多数应用程序也直接或间接地创建其他窗口 ...

  6. js最常用正则表达式集合

    常用正则表达式合集:验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9] ...

  7. 没有robots.txt文件是否会影响收录呢

    Spider在抓取您的网站之前,会访问您的robots.txt 文件,以确定您的网站是否会阻止 蜘蛛抓取任何网页或网址.如果您的 robots.txt 文件存在但无法访问(也就是说,如果它没有返回 2 ...

  8. Android刮刮卡自定义控件

    网上的都是自己绘制的或者图片,我的需求是可以随意的自定义底部和顶部的布局.所以自己重写一个,原理就是直接继承 View 来实现一个刮层,让这个刮层和图片以及文字不产生任何依赖,再结合 FrameLay ...

  9. .net整理

    CLR via C# 1 关于CLI,CTS,CLS,CIL,.Net Framework,CLR,FCL图 CLI:Common Language Infrastructure,是公共语言架构: C ...

  10. cs231n spring 2017 lecture14 Reinforcement Learning 听课笔记

    (没太听明白,下次重新听) 1. 增强学习 有一个 Agent 和 Environment 交互.在 t 时刻,Agent 获知状态是 st,做出动作是 at:Environment 一方面给出 Re ...