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

一个接近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认知的时间还很短,博客内的观点未必足够全面,欢迎各位帮助补充完善
时间: 2024-10-12 15:23:06

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

移动端触屏网页的touch事件

PC端网页从无到有发展至今,人们习惯了鼠标与键盘的人机交互模式,因此在PC端网页开发中一般使用鼠标事件和键盘事件. mouse事件: onclick事件:在单击鼠标左键或右键时发生. ondoubleclick事件:在双击鼠标左键时发生. onmousedown事件在单击鼠标按钮(左键.右键或中键)并且尚未松开时发生. onmousemove事件:在鼠标光标移动时发生. onmouseup事件:在松开鼠标按钮(左键.右键或中键)时发生. onmouseover事件:在鼠标光标移动到对象上时发生.

jquery触屏幻灯片

qq群号(html5技术交流):158677025   手机端演示二维码(或直接在手机中输入网址:http://lilinfeng.cncoder.me 浏览效果): 一.前言 去年接触了移动Web开发,做了些手机端的网站及应用,还有些小的微信游戏和活动页面.每个项目里或多或少的都会有一些触屏事件等.其中有两个用到了jquery触屏幻灯片.刚开始的时候也在百度上搜索了一翻,但最终都没有找到合适的,因此就觉得自己写一个了.下面的例子是我在已前的项目里摘出来的,对于触屏本人也不算老鸟,有写的不足的地

多点触屏浏览器的js开发

这篇文章讲到了很多关于手机触摸事件的知识,比如touchstart,touchmove,touchend,对于获取屏幕的左右跟网页版的也是不一样的哦.我以前也比较少接触这方面的知识,最近做一个项目才发现原来用event.pageX是获取不了当前的位置(在手机上).需要用到var touch = event.originalEvent.touches[0]; 然后touch.pageX才可以在手机里面获取.我今后会分享多一些这方面的内容,关于移动开发其实也挺有趣的. 前言诸如智能手机和平板电脑一类

WebApp触屏版网站开发要点

所谓的触屏版网站其实也是WebApp的一种展示形式,主要是依赖HTML+CSS+Javascript这三个关键因素来实现,相比较原生客户端程序来说优点就是开发周期短.升级简单.维护成本低,因为从根本上来说WebApp的本质就是一个网站而已.这里就说一下如何开发一个适合在触屏设备上展示的页面. 如果有在PC端开发网页的基础那么去处理手机端就很容易上手,这里介绍的是针对手持设备专门处理的页面,而不是媒体查询那种展示方式. 这里提供几个meta属性 使页面不可以认为放大缩小,喜欢用手指捏来捏去的童鞋要

zTouch-移动端触屏开发利器(zepto touch扩展)

* Zepto.js v1.0.1 touch extend (Zepto.js v1.0.1 的swipe touch扩展)js-处理手机移动端web触屏手势动作. Zepto.js v1.0.1版本的touch.js模块引入使用后会导致页面很卡的情况,所以开发了一个新的扩展插件来替换其touch.js.已经过Android/ios测试. github* zTouch特点: zTouch.js只包含核心功能函数,不包含任何效果,简洁轻巧;    提供丰富的回调参数,可由用户自定义扩展效果(可参

免费的HTML5连载来了《HTML5网页开发实例详解》连载(五)图解通过Fiddler加速开发

Fiddler是Windows底下最强大的请求代理调试工具,监控任何浏览器的HTTP/HTTPS流量,窜改客户端请求和服务器响应,解密HTTPS Web会话,图4.44为Fiddler原理示意图. 图4.44  Fiddler原理示意图 Fiddler安装的系统要求为Windows XP或Windows 8中的版本,其中Fiddler2依赖于Microsoft.NET Framework 2.0,最新的Fiddler4依赖于Microsoft.NET Framework 4.0. Fiddler

WPF Multi-Touch 开发:高级触屏操作(Manipulation)

wpf多点触控操作关注博主:http://kb.cnblogs.com/page/71167/ WPF Multi-Touch 开发:高级触屏操作(Manipulation) 时间:2010-10-05 03:15来源:博客园 作者:李敬然 点击:1854次 在上一篇中我们对基础触控操作有了初步了解,本篇将继续介绍触碰控制的高级操作(Manipulation),在高级操作中包含了一些特殊的触屏手势:平移.缩放.旋转,当然在WPF 中无需自行开发这些手势,只需将UI 控件的IsManipulati

触屏开发技巧之——左右滑动导航

今天来说一个小技巧,相信现在有很多程序员会考虑到触屏开发,毕竟现在的触屏设备这么多. 首先,你需要一点js的知识,不需要很牛,因为我也是个js菜鸟.这段代码也从别的地方看来修改的,刚好符合需要. 话不多说,上个实例. 上面这个页面中的导航是可以左右滑动的. 布局的话相信对于css的人来说是不难的. <!--导航部分--> <div id="warp" class="warp"> <div id="inner" cla

iOS开发五种触屏事件的处理

UIGestureRecognizer:是一个抽象类,表示触屏手势,这个类没有具体的作用.实际中经常使用的是这个类的子类: UITapGestureRecognizer(敲击手势),UILongPressGestureRecognizer(长按手势),UISwipeGestureRecognizer(清扫手势),UIPinchGestureRecognizer(捏合手势),UIPanGestureRecognizer(拖拽手势).这五种手势的使用方法大同小异,下面介绍具体的使用方法: 1. UI