首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

微信小程序实践:2.3 可滚动容器组件之 scroll-view

6,有时候一个后台vue页面没有人动它,它自己抖动不止,这可能是什么情况? 7,如何在scroll-view自定义实现一个下拉刷新交互动画?...如果没有这两个参数,这个动画就实现不了啦。默认情况下,WXS视图层执行,与页面JS代码不是一路,后者是逻辑层执行。...微信官方文档所讲,WXS是一套不一样脚本语言,它是WeXin Script简写。WXS与JS是不同语言,有自己语法,并不和JS一致。...基础库版本虽然解决了这个问题,但是当内容少时候,却是连页面内容也滑动了。这是可以理解,因为除了父容器上监听scroll事件,可能也没有其它解决方法了。 问题是解决了,但牺牲了一些性能。...并且,滚动scroll-view时,小程序会阻止页面回弹;scroll-view滚动,无法触发onPullDownRefresh事件

14.1K30

滚动穿透6种解决方案【已自测】

需要我们能确保用户不发生上滑页面滚动屏幕情况下就能触发弹层出现,就不会出现我上边说问题。...关键代码: JS控制弹窗交互、body禁止滚动 ? css添加弹层超出滚动效果 ? 局限问题: 弹层内容滚动到顶部或底部后,还会连带页面body一起滚动。也就是还会发生穿透效果。...真正问题是当我们滑动弹窗可滚动区域,把可滚动区域内容上滑到底部或下拉到顶部后,再触发弹窗可滚动区域准备滑动,此时背景页面就会跟随滚动。真是恐怖。...局限问题: 因为touchmove被禁掉了,就会造成弹窗内部所有位置都不能响应touchmove事件,效果上就是弹窗内部不能再滚动了。 赘述: 弹层不需要超出滚动情况下,才可以使用这个。...这时,我们可以通过记录用户打开弹窗前所滚动页面的位置,弹层展开时候赋给bodycsstop值,等关闭弹层时候,再把这个值赋值给bodyjsscrollTop值,还原body滚动位置。

13.4K31
您找到你想要的搜索结果了吗?
是的
没有找到

JS函数防抖

前言 写聊天页面的时候有个滚动底部弹出键盘,打开表情,打开更多,发送消息等很多场景下需要重新计算底部高度和滚动到最底部操作。导致连续调用函数来计算,导致了效率问题,页面极其卡顿。...使用JS防抖函数前提条件主要有以下几点: 有频繁事件触发 :如果你有一个事件,如用户输入、窗口大小改变、滚动事件等,这些事件频繁地触发,而你希望事件停止后一段时间内只处理一次,那么防抖函数就非常有用...延迟响应需求 :有时候,我们希望在用户停止触发事件后,再进行响应。比如用户搜索框输入文本,我们可能希望在用户停止输入一段时间后再发送请求,这样可以避免不必要请求,提高性能。...只关心最后一次触发一些场景,我们只关心最后一次触发事件结果。比如用户搜索框输入文本,我们只关心用户最后一次输入内容,而不关心中间过程。这种情况下,防抖函数也是非常有用。...函数防抖很多时候是会降低用户体验而不是没有代价。所以需要注意是,防抖函数并不适用于所有场景。比如,对于一些需要实时反馈场景,打字效果,就不适合使用防抖函数。

9720

throttle与debounce区别

当我们为DOM事件关联方法时,若我们有一个debounced和throttled函数将会很方便,为何?因为这样我们可以事件和执行函数之间添加一层控制,注意我们并没有去控制DOM事件触发次数。...2011年,Twitter网站曾爆出一个问题:当你主页往下滚动时,页面会变得缓慢以致没有响应。...为何不立即触发,就像开始没有使用debounce事件处理?直到连续执行事件中有一个暂停,才会再次触发。 你可以通过一个leading参数做到: ?...Throttling Examples 一个相当常见例子,用户在你无限滚动页面上向下拖动,你需要判断现在距离页面底部多少。如果用户快接近底部时,我们应该发送请求来加载更多内容到页面。...在此 _.debounce 没有用,因为它只会在用户停止滚动触发,但我们需要用户快到达底部时去请求。通过_.throttle 我们可以不间断监测距离底部多远。

2K50

【查缺补漏】 15个高频微信小程序面试题

WXML: 微信自己定义一套组件 WXSS : 用于描述 WXML 组件样式 js : 逻辑处理 json : 小程序页面配置 2.小程序怎么跟随事件传值 页面标签上通过 绑定...小程序生命周期函数 onLoad : 页面加载时触发。一个页面只会调用一次,可以 onLoad参数获取打开当前页面路径参数 onShow : 页面显示 / 切入前台时触发调用。...onHide : 页面隐藏 / 切入后台时触发 navigateTo 或底部tab切换到其他页面,小程序切入后台等 onUnload : 页面卸载时触发。...方案二: scroll-view : 使用该滚动组件 自定义刷新,通过 bindscrolltoupper 属性, 当滚动到顶部/左边,会触发 scrolltoupper事件,所以我们可以利用这个属性...官方也没有明确说明 什么时候销毁, 不同机型表现也不一样, 2019年开发时:时间官方文档没有说明,但是经过询问一般指5分钟内 2020年开发时:时间官方文档没有说明,实测安卓没有固定时间,内存足够情况下

1.2K51

微信小程序解决ios页面上推问题

相信大家写原生小程序都遇到过一个问题,当输入框聚焦键盘弹起时,页面会自动上推,使得输入框刚好位于键盘之上,安卓推动只是内容,但在ios,推动是整个页面,导致导航栏被推出屏幕外,如下:图片针对这个问题...键盘弹起后,获取到键盘高度C,用显示区域B减去键盘区域C就是我们可使用区域D获取输入栏底部距离显示区域坐标,E/H若输入栏底部坐标小于可使用区域D,H,则说明当键盘弹起时,该输入栏不会被键盘遮挡...方案一键盘事件触发多次,可能每次获取到高度和元素bottom不同,从而导致多次滚动,这里可以使用节流获取到第一次数据即可大家根据自己需求选择使用哪一种方案三、疑难杂症一些特殊场景下,还会有各种奇奇怪怪问题...,会默认保留全部小数,我们都知道,js计算时候会存在精度问题,有可能会滚动错误解决:获取到元素坐标后,最好只保留两位小数,计算时注意处理精度3、问题:当页面同时有input和textarea时,若只给...,获取到真实键盘高度,页面添加两个变量,一个是input高度,一个是textarea高度,当输入框聚焦获取到键盘高度时,判断当前类型高度是否有值,没有就赋值,有就用之前值const height

4.7K30

15个高频微信小程序面试题

WXML:微信自己定义一套组件 WXSS : 用于描述 WXML 组件样式 js : 逻辑处理 json : 小程序页面配置 2.小程序怎么跟随事件传值 页面标签上通过 绑定 dataset-key...小程序生命周期函数 onLoad : 页面加载时触发。一个页面只会调用一次,可以 onLoad参数获取打开当前页面路径参数 onShow : 页面显示 / 切入前台时触发调用。...onHide : 页面隐藏 / 切入后台时触发 navigateTo 或底部tab切换到其他页面,小程序切入后台等 onUnload : 页面卸载时触发。...方案二: scroll-view :使用该滚动组件 自定义刷新,通过 bindscrolltoupper 属性, 当滚动到顶部/左边,会触发 scrolltoupper事件,所以我们可以利用这个属性...官方也没有明确说明 什么时候销毁, 不同机型表现也不一样, 2019年开发时:时间官方文档没有说明,但是经过询问一般指5分钟内 2020年开发时:时间官方文档没有说明,实测安卓没有固定时间,内存足够情况下

81210

15个高频微信小程序面试题

WXML: 微信自己定义一套组件 WXSS : 用于描述 WXML 组件样式 js : 逻辑处理 json : 小程序页面配置 2.小程序怎么跟随事件传值 页面标签上通过 绑定...小程序生命周期函数 onLoad : 页面加载时触发。一个页面只会调用一次,可以 onLoad参数获取打开当前页面路径参数 onShow : 页面显示 / 切入前台时触发调用。...onHide : 页面隐藏 / 切入后台时触发 navigateTo 或底部tab切换到其他页面,小程序切入后台等 onUnload : 页面卸载时触发。...方案二: scroll-view : 使用该滚动组件 自定义刷新,通过 bindscrolltoupper 属性, 当滚动到顶部/左边,会触发 scrolltoupper事件,所以我们可以利用这个属性...官方也没有明确说明 什么时候销毁, 不同机型表现也不一样, 2019年开发时:时间官方文档没有说明,但是经过询问一般指5分钟内 2020年开发时:时间官方文档没有说明,实测安卓没有固定时间,内存足够情况下

5.6K10

📚一站式解决:H5开发全攻略,看这篇让你省时又省力

H5 ,我们通常会使用 REM 和 VW 这两种单位来实现页面的响应式布局。...当内容滚动到顶部或底部时,滚动事件不会继续传递给父容器。...此外,点击穿透问题也常见,点击蒙层,蒙层消失后可能会触发蒙层下层元素点击事件。 解决方案 禁止缩放:通过设置 meta 标签 user-scalable=no来禁止用户缩放。...} ⭐️⭐️IOS解析日期问题 某些情况下,苹果系统上解析 YYYY-MM-DD HH:mm:ss 格式日期会报错 Invalid Date,而安卓系统则没有这个问题。...需要锁定滚动情况下,给 document 添加 touchstart 和 touchmove 事件监听器,通过捕获触摸滑动事件,并根据情况阻止默认行为,从而避免滚动穿透。

36620

微信小程序之上拉加载与下拉刷新

移动端,随着手指不断向上滑动,当内容将要到达屏幕底部时候,页面会随之不断加载后续内容,直到没有新内容为止(我们是有底线-o-),我们称之为上拉加载,从技术角度来说,也可以称之为触底加载。...上拉加载 前面我们已经了解到下拉加载本质是一个分页加载,每次触发加载下一页条件是当前页面到达底部,因此,我们可以整理出一个实现基本思路: 初始页号为1,向后端请求第一页数据(数据包含数据总条数...感觉实现起来也不难,主要就是其中“监听页面是否被滚动底部”如何来实现?...Web页面开发,我们会通过监听window.onscroll事件事件处理方法获取当前页高度和滚动量,以此来计算判断页面是否已滚动到底。...而在微信小程序,我们并不需要自己来计算,小程序Page已提供现成监听用户上拉触底事件处理函数:onReachBottom,它会在页面触底时候自动触发(或在距离页底一定距离时候触发,可设置)。

4.1K20

uni-app中使用scroll-view滚到底部时多次触发scrolltolower

一、前言、scroll-view基本属性: 前言:   前段时间使用scroll-view可滚动视图区域容器来做多个不同内容展示(我这个页面同时使用了三个scroll-view做数据展示),因为这几个展示内容数据都比较多...但是使用scroll-view导致页面没有滚动,则触底事件不会被触发,所以这里存在问题是有时候无法触发onReachBottom。   ...第一个问题就是当滚动滚动底部时会多次触发scrolltolower事件,第二个问题是当页面由第一个scroll-view(该页面已经到了底部了)切换到第二个scroll-view时会自动滚动页面的最底部...三、解决方案: 关于页面到最底部多次触发scrolltolower事件解决: scrolltolower触发事件设定一个定时器setTimeout(callback, delay, rest...,当切换到第二个scroll-view时默认设置scrollTop为0,那么切换到第二个页面的同时页面的竖向滚动位置会默认滚动到最顶部,从而解决了默认滚动到最底部加载多次数据问题。

7.2K10

这一次,彻底解决滚动穿透

,同时也没有 preventDefault掉原生滚动/滑动事件,那么此时触发是 viewport滚动, position:fixed元素并没有什么例外。...;} 这个想法很美好,不侵入JS情况下禁止滚动,然而: 只加 overflow:hidden对移动端是无效!...(请注意蒙层出现时,底部列表发生变化) 在这个交互过程,浮层弹出时,底部列表首先滚动条被置为初始态,关闭浮层后重置为之前记录位置。...这样一来只需要在可滚动容器上加入 can-scroll类名即可滚动,但是这种滚动又随之带来一个问题: 当滚动到元素顶部和底部再继续滚动时,又会触发滚动穿透!...可是从使用性质来考虑,还不是很便捷,尤其是现在 React, Vue这类框架,还需要考虑浮层什么时候实例化,什么时候应当调用 lock和 unlock显得有些麻烦,因此编写了一个React版本组件

2.3K21

收藏 | 移动端H5开发常用技巧总结

所以苹果系统和安卓系统通常都会禁止自动播放和使用 JS 触发播放,必须由用户来触发才可以播放。...手指按住屏幕上拉,底部多出一块白色区域。 iOS ,手指按住屏幕上下拖动,会触发 touchmove 事件。...这个事件触发对象是整个 webview 容器,容器自然会被拖动,剩下部分会成空白。...input 键盘事件 keyup、keydown、等支持不是很好, 用 input 监听键盘 keyup 事件安卓手机浏览器没有问题,但是 ios 手机浏览器中用输入法输入之后,并未立刻相应 keyup...软键盘唤起后,页面的 fixed 元素将失效,变成了 absolute,所以当页面超过一屏且滚动时,失效 fixed 元素就会跟随滚动了。

4.2K20

12个关于移动 H5 开发采坑问题汇总

由于篇幅原因,某些非核心解决方案实现细节暂未谈论,需要自行研究。 iOS 滑动不流畅 表现 上下滑动页面会产生卡顿,手指离开页面页面立即停止运动。整体表现就是滑动不流畅,没有滑动惯性。...手指按住屏幕上拉,底部多出一块白色区域。 产生原因 iOS ,手指按住屏幕上下拖动,会触发 touchmove 事件。... vant button 组件 那么,是否可以将 click 事件全部替换成 touchstart 呢?为什么开源框架还会给出 click 事件呢?...很容易想象,我需要touchmove滑动时候,优先触发了touchstart点击事件,是不是已经产生了冲突呢? 所以呢,具有滚动情况下,还是建议使用 click 处理。...产生原因 我们app 布局中会有个固定底部。安卓一些版本,输入弹窗出来,会将解压 absolute 和 fixed 定位元素。导致可视区域变小,布局错乱。

1.5K20

第134天:移动web开发一些总结(二)

两种设计之间没有任何平滑渐变。只使用媒体查询,布局有时会变得不可控制。 当然,这只是建议,也有一些页面采用固定布局情况下能够很好一些没有考虑过媒体查询情况下设备上很好展示。...但注意:event.preventDefault()会导致默认行为不发生,scroll,导致页面滚动!如果页面带有滚动条,就需要考虑更换解决方案。...(3) 弹性滚动,下拉刷新 ①弹性滚动:当客户端页面滚动到顶部或底部时候,滚动条会收缩并让我们多滑动一定距离。通过缓冲反弹效果,带给用户良好体验。...但是移动开发,给整个整块页面使用position: absolute;很占用内存,特别是当内容比较多时候,会非常明显。...会有几个后果:ios下,会导致浏览器直接崩溃掉;android下,会导致非常非常的卡。所以建议直接用js计算。

1.7K10

Scroll,你玩明白了嘛?

今天主要聊一下关于 scroll 应用: CSS 平滑滚动 JS 滚动方法 区分人为滚动和脚本滚动 2、CSS 平滑滚动 2.1 一行样式改善体验 一些滚动交互比较频繁场景,我们可以通过滚动容器上增加一行样式来改善用户体验...也就是说, JS 中指定 behavior: auto,想要恢复立即滚动到目标位置效果,将不会生效。...而且相较于其他方法,一般不会出什么幺蛾子(后文会讲到)。 3.2 应用 自己以往需要用到滚动场景有: 组件初始化,定位到目标位置 点击当前页靠底部某个元素,触发滚动翻页 .........这个问题常常发生在哪些情况下呢? 1、页面有 iframe 情况下,比如说这个例子。 表现是当 iframe 内内容发生滚动时,主页面也发生了滚动。...像上面的演示,用户触发了人为滚动,之后点击 “回到当前播放位置”,触发了脚本滚动。 4.2 人为滚动 怎么定义 “人为滚动” 呢?

3K21

前端高薪必会JavaScript重难点知识:防抖与节流详解

二、防抖案例:搜索查询 比如我们一个表单输入内容,JS通过监听输入框值变化来查询搜索结果,我们会通过keyup事件来处理,当键盘弹起时就会触发keyup事件事件处理函数中发送请求处理查询结果。...事件需要在400ms后才会处理查询操作,所以在下次触发keyup时,时间400ms内,就会把上一次定时器给清除了,本质上就没有触发查询操作。...当我们滚动浏览器滚动条时,会频繁触发scroll事件。我们通过监听浏览器scroll事件来断判断滚动条位置,如果滚动滚动页面的最底部,则就会加载更多信息。...滚动加载更多源理: 可视区高度 + 滚动滚动高度 >=文档高度 (整个滚动高度) 时就触发加载更多信息 未添加节流处理前效果 scroll事件函数代码,scroll事件触发时会频繁被执行,...节流应用场景 监听滚动事件判断是否到页面底部自动加载更多 搜索联想功能 DOM元素拖拽功能实现 射击游戏 mousedown/keydown 事件(单位时间只能发射一颗子弹) 防止高频点击提交,防止表单重复提交

1.5K00

挥别web移动端开发差异和经典坑

手指按住屏幕上拉,底部多出一块白色区域。安卓无此特性。 iOS ,手指按住屏幕上下拖动,会触发 touchmove 事件。...问题 描述: iOS系统JS转换字符串变日期对象时候,字符串格式必须是/相隔,通常情况是-相隔,微信小程序IOS环境同样出现出现此问题 iOS系统对jsnew Date()方法有格式要求 let...,安卓手机浏览器没有问题,但是 ios 手机浏览器中用输入法输入之后,并未立刻相应 keyup、keydown 事件 非直接文字输入(中文输入法)下,进行判断限制,仅在选词后触发input事件...描述:使用oninput监控输入框内容变化时,我们期望仅在value值变化时,才触发oninput事件,而在中文输入下,未选词时按键也会触发oninput事件。...关键解决:composition event compositonstart: IME文本复合系统打开时触发,表示要开始输入例如(输入法出现那一刻) compositionupdate: 向输入字段插入新字符时触发

2.8K20
领券