体验优秀的触屏网页开发加速滑动与回弹

一个接近naturalapp体验的加速滑动与回弹css3属性

前几天,楼主发表了一篇关于手机网页开发软键盘与fixed博文叫做:webapp前端开发软键盘与position:fixed为我们带来的不便

自以为总结的挺好挺有范,但是很不幸,通过学习交流很快就有了更好更完美的方案,而且还是来自safari原生控件实现,代码很简单

overflow-y:auto;-webkit-overflow-scrolling:touch;

效率很高的有着硬件加速的系统级控件,简约而不简单

代码很少很简单,但我们可以替代掉之前为解决ios下软键盘与fixed问题而使用的webapp前端开发框架iscroll

iscroll框架带来的消耗且不论,它的确是解决了我们的问题,但是同时给我们带来了不少后遗症与代码处理上的麻烦

-webkit-overflow-scrolling来自safari原生控件的实现,工作原理是:在有这个属性的容器上,系统会创建了一个uiscrollview,应用于该元素并将之作为渲染对象,从而为我们实现体验流畅的触屏滑动

在ios上的表现结果令人十分满意,并且网页滑动和区域滑动的冲突同样解决的很好

接前文思路,位置被固定了的悬挂与滚动元素分离代码展现

<!doctype html>
<html lang="zh-cn">
<head>
<title>-webkit-overflow-scrolling</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />

<style>
html,body{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;}
body{position:relative;font-size:16px;}
*{padding:0;margin:0;}
header,footer,section{background:#eee;position:absolute;top:0;left:0;right:0;line-height:50px;text-align:center;}
footer{top:auto;bottom:0;}
section{padding:15px 0;overflow-y:auto;background:#fff;top:50px;bottom:50px;-webkit-overflow-scrolling:touch;}
</style>
</head>
<body>

<header>头部</header>
<section>正文</section>
<footer>底部</footer>

</body>
</html>

有人可能会问为什么html和body也要加,这两位是否有必要给这个属性

场景展示:

html和body都加

html和body都不加或只有一个加

前者比后者触发网页滑动的几率要小很多,自己试试吧

-webkit-overflow-scrolling的缺点

它当然也有自己缺点,既然创建了系统级控件就势必会有内存消耗,但是相比我们使用一套框架它的性价比不言而喻

在android下的表现也不令人满意,所以我们只是用它来替代之前为优化ios体验而准备的开发框架iscroll的工作

楼主对于-webkit-overflow-scrolling认知的时间还很短,博客内的观点未必足够全面,欢迎各位帮助补充完善
原文地址:https://www.cnblogs.com/johnl/p/4204004.html