滑屏开发实践九问腾讯腾讯云开发者社区

滑屏的交互形式自从在 H5 中流行起来,便广泛应用在产品宣传、广告、招聘和活动运营等场景中,作为微信朋友圈广告惯用的形式,其影响力更是得到了强化与放大。如今滑屏H5可谓玲琅满目,数不尽数。

作为一个 UI工程师,接过很多类似的项目,也曾写过滑屏的插件,在经历了不同的需求的“洗礼”并踩过若干个坑之后,不禁反问自己:应该如何面对每一次类似的需求,在已有的经验下如何做到体验更好?如何节省工作量提高效率?面对性能优秀的 iOS 与性能良莠不齐的 Android 平台,又如何做到体验统一与性能最优?

页面随手势拖拽后翻屏

滑动后(touchend)后翻屏

如上面两个 Gif 图所示,两种方式的差异在于:

而后者只需要在松开手指后再进行计算与翻页,性能大幅提升:

而且从第一种方案切换到第二种时,交互上的微妙改变并没有带来直观的影响。所以从性能角度上,滑动翻屏自然是最佳的选择。

控制 wrapper 滑动

控制每一屏滑动

如上 Gif 图所示,滑屏可以在 wrapper 上操作,也可以将每一屏作为独立的滑动元素。简单的滑动可能两者并无太大差异,但假如把多样的需求和场景考虑到,可以发现在滑屏上也会细化出很多功能点:

在上述要求下,前者已显得分身乏术,而后者由于其元素间的自由性,可以满足上述的需求,且效果更佳,虽然实现复杂度会提高。

最关键的是,前者的实现方式在部分安卓上偶尔会出现卡在上一屏与下一屏中间的情况,一开始遇到时做了很多补救都无果,最终才无奈替换了整个滑动方案,采用第二种控制内部元素的方式,可谓血的教训。

什么是卡在上一屏与下一屏中间呢,类似这样:

需要吗?需要。不需要吗?不需要。

需不需要看需求对 H5 的定位,若是类似微信朋友圈广告的这种品牌运营 H5,有大量素材作为支撑的页面,是需要进入时 loading 页的,这一点希望提前跟产品经理达成共识;但假如页面是系列活动中比较重要的入口,需要多次进入,则不要有 loading 页,力求一进入就能直接看到。

针对有 loading 的情况,还需要考虑:

是否一次性将所有资源 load 完? no no no,即使有专门的 loading 页,都请分屏加载,否则这里将会流失大量用户。

上述是理想数值,实际上根据腾讯云统计到的 2G/3G 的下载速率,远未达到理想的速度:

根据《工信部及三大运营商发布11月用户发展情况》可得知:中国移动用户 2G 用户占 41.4%,3G 用户占 31.3%,4G 用户占 27.3%。现状远远没有长期处于 WiFi 环境下的我们想象的那么美好,虽然这些用户并非长期使用 2G/3G,但是页面必须确保在 2/3G 环境下有一个顺畅的浏览体验,避免用户流失。建议首屏资源在 300KB 左右(大概加载时间为 2~3s 左右),并设置缓存。

针对无 loading 的情况,还需要考虑:

假如页面有比较丰富的动画,需要先加载资源才能被正常播放呢? 要么去掉动画,要么用 CSS 或 JS 来实现动画,必须要做出取舍。

既然是无 loading 的页面,自然对速度有要求,还能提高加载速度吗? 可以,请分屏加载。若希望做到体验无缝,请在前一屏加载后一屏的资源。

内部滚动即某屏内部还有滚动(但实际上系统的滚动跟滑屏的滚动是冲突对立的),如果这一屏不涉及复杂的 DOM,我还是觉得可以使用 iScroll,虽然它在安卓上的性能一直被诟病,但经过非常多安卓机的检验,效果还是在可接收范围内的,但别忘了前提:DOM 不复杂(如活动规则页)。

那是否有更好的解决方案呢?不妨回看之前滑屏的最佳实现方式:

可以看到,在每一屏上进行操作,当上一屏或下一屏滑动到当前屏时,之前的那一屏会去掉 translate 属性,回归到最初的状态(被当前屏盖在下面,即 position:absolute; left:0; top:0),这个时候,将当前屏的 position:absolute; height:100% 去掉,使其回归文档流,那么 body 将会被撑开,页面可以被正常滑动,是不是连 iScroll 都省了?

尝试着写了个 Demo:

正如你体验到的那样,理想很丰满,现实很骨感,在 PC 上的体验这个Demo是没有问题的(请在 Chrome 下模拟手机滑动),然而因为 iOS 和 Android 中很多浏览器都自带 bounce 回弹效果,而 iOS 和 Android 的大部分浏览器中,页面滚动时是会阻止页面重绘的(JS 的执行也无法立刻生效在页面中),所以Demo 里看到的效果就是回弹后才翻屏。所以目前这个方案页仅限于某些场景使用。

之前在做一个宣传活动 H5 的时候,默认开启过音乐,发现 28w 曝光只有 800 个人主动关闭音乐。所以默认开启还是最优的,在制作音频的时候注意体积最好在 100~200k 范围,并且默认音量不应该太高,收尾渐入渐出,还得注意版权。

很多 H5 页面都只针对移动设备展示,但如果分享的链接被人在 PC 中打开呢?比如分享到微博或QQ 空间的链接,被正在电脑上浏览的人打开,看到的是一个显示不正常的页面,这样的体验是非常不好的。所以最好的做法就是准备一个 PC 的扫码页面或将内容搬到 PC,打通回路,为 H5 页面引流。

移动端对 CSS3、Canvas、SVG 动画的支持已经不错了,目前兼容性较差的系统主要有 Android 2.3,它不支持 animtion-fill-mode 属性,这会导致动画播放完后无法保持在最后状态;不支持 before/after 伪元素的动画;不支持 animation-timing-function: steps,所以也无法玩转图片序列帧;所以可以特别针对这个版本进行差异化处理,通过判断 UA 对其展示静态页面。

然而最佳的退化方式不应该是版本检测,而是能力检测,可以通过 Modernizr 这个组件判断设备具备的能力。

适配的核心就是确保内容在不同的屏幕分辨率下显示正常,经常采用的方式有 REM、Media Query 和 JS+CSS,没有一套永恒不变的适配方案,往往需要多种结合。如果是比较简单的展示类H5,可以参考如下的代码:

当然,少不了横竖屏的提示:

不过在 iPhone4/4s 这种小屏幕下,也可以尝试取消分屏滑动,直接用浏览器原生的滚动。

我们也许还会遇到如下情况:

相信对于大部分 UI 开发来说,写出一个安卓下不卡顿,没有兼容性问题的页面是最美好的愿望,有时候甚至可以针对 iOS 跟 Android 专门写一套代码,看似工作量大,其实可以规避掉很多不必要的麻烦。同时也需要跟产品、设计师们在安卓上的体验退化上达成一致,以免页面做出来后带来预期上的落差。

在追求最佳实践的路上,永远少不了层出不穷的问题。不一而足,无法穷举,滑屏只是一种形式,内容才是 H5 的精华所在,切勿舍本逐末。如今可以看到越来越多的创意融入 H5 中(视频、Canvas、SVG 等),前端世界变得越来越丰富多彩,这对开发者来说是机遇也是挑战,你我共勉!

THE END
0.Pre如何创建斜架滑斜架滑道作为工业设计与船舶工程中的关键结构,其设计精度直接影响设备运行的稳定性与安全性。本文将从斜架滑道的基础原理出发,结合软件操作与工程实践,系统阐述其创建方法。 一、斜架滑道的工程定义与分类 斜架滑道是一种通过倾斜轨道实现设备或船舶纵向/横向移动的机械结构,其核心功能是将水平位移转化为可控的斜向运动jvzquC41i0vdqwqkpg4dqv3ep1~03B=513?95?>820nuou
1.「楼梯间」也可以落地企业文化?30+案例教你怎么做!知行晓政*左右滑动查看图片 02 ✦ 打造楼梯间“互动平台” 除了提前绘制好与企业文化相关的涂鸦,还可以打造一个楼梯间的“互动平台”,可以在这里交流意见,可以在墙面上肆意涂鸦。 通过这种开放自由的互动方式让原本的楼梯间耶鲜活生动起来。 三七互娱在楼梯间打造「三言七句转转墙」,员工可以在转动与当天相符合的三言七句,jvzquC41yy}/uqfpi{kykwjk0ipo8ftvkimg8<499>987mvon
2.跨平台开发怎么选?从性能实测到生态适配,ReactNative与Flutter全后来抽时间用Flutter重写了核心页面,不仅滑动帧率稳定在60帧,动画效果也更流畅,但又遇到了新问题——某些原生SDK(比如特定厂商的支付接口)没有成熟的Flutter插件,只能自己封装原生桥接代码,花了不少功夫。 React Native和Flutter作为当下最主流的两大跨平台框架,各有各的优势和坑点。很多开发者纠结于“选哪个”:有人说jvzquC41dnuh0ryrwd4og}48;;<1:@61xkkxuyfeg/9229>::1
3.→🌈2025·未来新章·荣耀体验💫入口💎官网🌿平台当用户每一次点击修正、拖拽关联、滑动调整的行为都被转化为算法进化的养分,我们看到的不仅是技术指标的提升,更是人机智能融合的全新可能。随着脑机接口、增强现实等下一代交互技术的成熟,实体识别算法或将进入"行为即训练"的实时演化时代,而把握这种交互与算法的共振节奏,将成为企业在智能浪潮中突围的关键。 展开 jvzq<84o0w~sl{qh0et0ijrg13724:>3:a?::95997e44<;20jznn
4.数学建模常用模型算法范文为了培养学生丰富的数学算法思想,为他们的想法提供了实践平台,在高校的《数学软件》课程教学中应该考虑利用多种有效的教学手段,开启学生的算法设计与构造模型的思维和技巧,鼓励他们大胆创新,促进学生对于一种或几种数学软件的偏好,达到提高教学质量的目的,为新时代的发展培养技术型人才。jvzquC41yy}/i€~qq0ipo8mcqyko1;;963;/j}rn
5.OrangeUI2.广告图片轮播功能,并且是可以跟随手指滑动切换,这是目前别的控件还做不到的。 3.列表ListView支持直接设置图片的URL,通过底层的多线程下载功能,可以轻松实现异步加载图片,并且不会感觉到卡顿。 4.列表框ListView自带下拉刷新、下拉加载的功能,在手机上加载2w条数据只需2秒。 jvzq<84yyy4ptjsigwo/ew4rtqjve}3rjr
6.滑动验证页面访问验证 别离开,为了更好的访问体验,请滑动滑块进行验证,通过后即可继续访问网页 请按住滑块,拖动到最右边jvzquC41yy}/q{fpigieu7hqo1
7.数学教学中如何运用信息技术国家中小学智慧教育平台(免费,百度直接搜)有个“分层作业”板块:基础层(巩固课本知识)、提高层(拓展解题方法)、挑战层(奥数难度)。我让基础弱的学生做基础层,中等生做提高层,尖子生挑战层,还能下载课件和微课,学生说:“不会的题看视频就能懂,不用总麻烦老师了。” jvzquC41yy}/srszwg9777hqo1lbppkc16979B;0jvsm
8.油田工作总结一、积极做好组织发动,认真构建活动平台 为保证“精细化管理”活动的扎实有效开展,结合我厂实际,召开了动员大会,成立了以主要领导为组长的领导小组和活动办公室,组织活动专班对本厂的管理现状进行了剖析,根据油田下达的精细化管理指标,制定了实施方案,并以文件形式进行了下达,将各项指标分解到责任部门和单位,落实到具体jvzq<84yyy4rwwqw0ipo8lqpi€vq86;76890qyon
9.Garena怎么注册Garena账号便捷获取攻略巨好玩平台入口:https://feixiazai.18183.com/transfer/trans-download/670?p=3 第二步:通过上一步链接即可跳转至代充页面,随后在搜索栏中搜索“Garena”。 第三步:确认你要充值的内容后点进去。 第四步:进入充值页面,在充值前,请玩家向下滑动充值页面,仔细阅读充值说明,根据自己的需要,选择充值方式。 jvzquC41yy}/3A6:50ipo8lqpirvg87245671=<5;5650qyon
10.椿萱茂创新研发养老信息化平台,让健康智慧化椿萱茂创新研发养老信息化平台,让健康智慧化 “福如东海,寿比南山”——这是中国人对于幸福长寿的诗意表达。但当下越来越多的人,对于“长寿”,不仅关注生命长度,更关注生命质量。也因此,“健康寿命”的概念越来越深入人心。 系列健康监测——指尖滑动,一切尽在掌握jvzquC41yy}/ezs0eqs/ew4o1ep0exsvgpz04973/3704B4eqpzfp}d:97=73;3jvo
11.DHDSS7016DSmart7016平台系列产品是我司自主研发的新一代软硬及智能一体化平台产品,基于“All-In-One”理念,全新的平台架构,产品集主控,转发,存储,智能,管理等功能于一身,具有建设成本低、部署运维简易、组合扩展灵活、性能强悍及安全稳定高可靠等特点,是构建基层治理解决方案的核心产品。 jvzquC41uvkwgw6432463|tng0ipo8hqorgo{wjyufkucrqa44=16>9580nuo
12.向上而生,追梦而遇,沐光而行他指出,上海医药作为国有医药企业,在当今充分竞争、完全开放的市场环境下,通过创新发展,做到了业务基础稳定、创新成果丰富、人才队伍强大,迎来了发展的黄金时期。希望新员工们能够在上海医药这个平台上充分施展才华,实现自身价值与企业发展的高效统一,向上而生,奋斗致远!jvzquC41v071lzpc0eun0ls1rkj`4>6:38=847xjvor
13.详解APIGateway流控实现,揭开ROMA平台高性能秒级流控的技术细节​​摘要:ROMA 平台的核心系统 ROMA Connect 源自华为流程 IT 的集成平台,在华为内部有超过 15 年的企业业务集成经验。 本文分享自华为云社区《ROMA集成关键技术(1)-API流控技术详解》,作者:中间件小哥 。 1、概述 ROMA 平台的核心系统 ROMAConnect 源自华为流程 IT 的集成平台,在华为内部有超过 15 年的企业jvzquC41zkk/kwkqs0io1jwvkerf1Ahf8;8dhB8:7g>7e>=e95=7hm
14.《纸片马里奥》全收集攻略奇诺比奥+宝物+隐藏砖位置在穿过山洞时,用锤子敲击喷气口上方的石锥,落下来可以堵住喷气口,从而让右侧通过喷气上下移动的平台到达更高的位置,从而获得墙壁凹室中的上限提升爱心+10。 嘿呵的嘿!嘿呵问答攻略 【赛跑问答】和【温泉问答】都是很简单的谜题,没有什么需要特别说明的地方。 jvzquC41yy}/ijrgtuqz0lto1jgofktqm181495913919=53a3680|mvon
15.面经总结(大数据开发相关)大数据面经本文深入探讨了大数据平台中Spark和Flink在实时处理领域的应用,分析了它们在容错、性能优化、资源调度等方面的策略。Spark通过内存计算和checkpoint机制实现高效处理,而Flink则凭借其流处理能力应对低延迟需求。文章还提到了数据倾斜、数据质量、容错性和扩展性等挑战,以及如何通过设置参数、优化计算逻辑和调整系统架构来应对这jvzquC41dnuh0lxfp0tfv8vsa5?4297;31gsvrhng1jfvjnnu1727;<3:2;