手机触屏版页面开发总结

在最初进行JS 框架的选型, 选择的是jQuery + jquery.mobile。

框架选型问题:

【1】大小问题, jQuery 是 277KB ,jquery.mobile 是 451KB ,当用户处于弱网络时,这个大小对于手机端的加载来讲,完全是一场灾难。
  【2】抛开 jquery.mobile 的大小不说, 对于移动端的开发而言, jquery.mobile并无出色的优势可言。在使用的过程中jquery.mobile  会给页面的DOM元素附加居多无用的CSS样式名, 大大减低了DOM布局的不稳定性。

框架选型解决办法: 
 
【1】zepto.js 是一款专为 移动端而生的JS 框架,压缩前大小为 54.6KB   压缩后之后只有 9.7KB 大大增加了JS的下载速度。
【2】 zepto.js 的使用和 JQ 几乎一模一样, 大大减小了学习成本, 只要用过JQ 的, 直接用就好了,且他不会给页面的 dom元素附加垃圾样式。

tap事件点透:

点击事件尽量减少使用  click , 而改用 tap, 原因在于 click 点击会出现 300ms左右的延时。
但是在使用 tap 作为点击事件的时候, 当你点击的元素定位方式为 固定定位 或者是 绝对定位时, 会出现点透的情况。

如上图, 灰色为半透明遮罩层, 用来做会弹出框的背景,遮住APP页面,点击 A 时,遮罩层消失, 点击 B 时 , 进入 【100%本息保障】 栏目的详情页面, 如果此时 会在 A 上绑定 tap 事件。 当你点A 的时候你会发现一个神奇的现象, 遮罩层会消失, 但是消失后页面会进入到 【100%本息保障】 栏目的详情页面 。 是因为 tap 事件被点透了。

tap事件点透解决办法:
e.preventDefault(); // 阻止“默认行为”
是不是觉得很简单?简单不要紧,最主要的是完美的解决了tap的点透问题 ,这个有点类似 原生JS 中的阻止事件冒泡, 关于事件冒泡, 在此不做解释和记录。

zepto.js 中的animate问题:
在移动端,经常会处理一些动画效果, 比方页面的图片焦点轮播效果, 弹出框的渐隐效果, zepto.js 中提供了一个处理动画的函数,animate, 在处理PC端的动画时,此函数非常优雅, 但是在处理速度不如PC的移动端来说, animate 函数就有点心有余而力不足了, 在处理动画时, 勉强可以完成, 但是在一些性能较差的手机上, 动画效果并不明显, 甚至会明显看到动画很卡。

zepto.js 中的animate问题处理办法:
touchslider.js 是一款专门处理移动端页面 图片焦点轮播效果的JS插件, 这款插件非常小,只有几KB大, 代码量也不大, 那天下午读过插件源码, 其实逻辑并不复杂, 主要是 JS + CSS3 来处理动画的, 用JS 对动画进行初始化处理, 而动画的执行则交给CSS3, 大家都知道, CSS3中的  animation 和 transition 有兴趣的则可以自己私下去了解。

webapp页面数据缓存问题:
在制作页面的过程中,页面的离线缓存卡了我很长一段时间,中间各种尝试,各种纠结,其中的心酸且听老衲细细道来。
html5提供了多种页面的离线缓存解决办法。

第一种:application cache
application  是一种较简单的数据缓存方式, 可将你要进行缓存的文件写入到 name.manifest  配置文件中。但是研究了一段时间发现此方案不可行,原因在于,只能对写入了配置项的内容进行缓存,且当使用手机360等软件清理手机缓存时, 缓存的数据会被清理掉。

第二种:localstorage 和 sessionstorage
于是想到了第二种解决方案,localstorage 和  sessionstorage , 这两种方式都可以将网络数据存储在本地, 前者保存的数据在浏览器关闭后, 依然存在手机中, 即使是你卸载掉此应用,如若不是你手动删除数据,数据将永久存在手机中。 而后者保存的数据会随着浏览器的关闭而被清理掉, 所以选择了使用 localstorage 。 但是仅仅有数据, 必须要有页面框架让其渲染。 就像是水一样, 如果没有杯子盛水,水永远不可能成为杯子的形状,现在数据有了,但是需要一个容器来装载它。 而当手机没有移动网络是, 我们无法从网络上获取页面,即使是有数据, 也无用, 于是用了一个不太好的方法, 将静态页面放到 webapp包中,这样的好处在于无须去网络下载CSS , JS 等内容, 数据的加载直接用 ajax 就好了!
到这里, 问题貌似得到了解决, 且慢, 又遇到问题了, 我如何判断手机是否有网络? 当然, web端可以通过 ajax 向服务器发送一个请求是否失败, 如果失败则证明无网络, 这个办法看似可行, 但是, 当用户处于弱网络时, ajax  请求必然会很慢, 有非常大的可能会请求失败, 虽然只是弱网络还是有网络的。那怎么呢? 可以让 安卓 和 IOS 来进行网络判断 , 然后将网络参数 token 带在 url 地址后面, 如: http://www.baidu.com?token=0 当传入的 token=0时, 为无网络 ; token=1 时为有网络。 IOS 一切正常, 看似问题解决了一样, 但是, 骚年, 不要紧, 在安卓4.0下测试, 无法获取到参数, 这是因为, 安卓 4.0 系统不支持将参数带在 url 后面,才刚刚看到曙光,在发现此问题后, 又陷入迷茫, 不过不要紧, 男人嘛? 就应该激流勇进, 迎难而上。 于是找 安卓开发沟通,找解决办法, 在一番痛苦的查找后,发现可以通过 安卓 调用 webapp端 JS 来完成传参,测试成功。于是大功告成,

localstorage 的写入方式
     var json_data = {id:12,name:"yang",email:"[email protected]"};   
     storage.setItem("json_data",JSON.stringify(json_data));

localstorage 的读取方式
    var json_data = JSON.parse(storage.getItem("json_data")) ;

注:localstorage 只能保存 5M左右大小的数据,1M = 1024KB  1KB= 1024字节, 按一个汉子两个字节来算, 大概可以存储2621440个汉字,如果是英文字母或者是数字的话可以存储5242880 个, 这个大小完全够用。

第三种: webSQL
看名字就知道, webSQL 就是一个web端的数据库,IE9~IE9+、chrome、Firefox、 Opera、Safari。webSQL和 localstorage区别在于, webSQL可以建立多张数据表, 每一张表相当于是一个localstorage ,很明显在存储的数据大小上远远要大于 localstorage ,但是复杂程度也是远远高于 localstorage 的,webSQL的使用和 localstorage 差不多,就不做细细解说了!

时间: 2024-07-30 15:59:15

手机触屏版页面开发总结的相关文章

WebApp触屏版网站开发要点

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

触屏版类似刷新页面文本框获取焦点的同时弹出手机键盘的做法

手机触屏版想要自动弹出键盘要满足的三个条件: 1.文本框获取焦点 2.手触屏该页面的屏幕 3.无延迟 实现实例(类似微信微博): <!DOCTYPE html><html lang="zh-cn"><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge"&

WAP、触屏版网站及APP的区别

 1.电脑版网站: 电脑版网站是指用户通过台式或者笔记本电脑浏览器打开的网站,也就是我们平时上网所访问的网站.其支持和兼容IE6.IE7.IE8.IE9.IE10.Firefox.Chrome等各种主流浏览器,该网站通常包含一些网站应用程序及系统(如:CMS网站内容管理系统等),并包含了独立的数据库及完整的后台管理系统,是企业开展网络营销和电子商务的基础. 为了管理和维护方便,其手机WAP版网站.手机触屏版网站.手机APP应用等通常共享同一个数据库和管理后台. 2.手机WAP版网站: WAP网站

问卷调查 for 移动触屏版

什么是移动触屏版(Html5触屏.WEB APP)? 采用最新HTML5技术,无需下载安装.无需下载升级,使用移动设备浏览器,就能访问自适应屏幕大小的访问界面,微信也能扫描访问. 为什么已经有PC网页版和移动端APP版还需要移动触屏版? PC网页版是基于传统PC上的浏览器使用,在移动终端浏览器访问会出现屏幕大小伸缩,不适合在移动终端浏览器上使用. 移动端APP版需要安装才能使用,而且有升级的烦恼. 基于Html5触屏版使用PC.手机.平板电脑浏览器都能自适应屏幕去访问,体验效果近乎于APP. 移

淘宝网触屏版 - 学习笔记(1 - 关于meta)

注:本文是学习笔记,并不是教程,所以会有很多我不理解或猜测的问题,也会有不尽详实之处,望见谅. <meta charset="utf-8"> <meta content="yes" name="apple-mobile-web-app-capable"> <meta content="yes" name="apple-touch-fullscreen"> <meta

问卷调查 for Html5触屏版

什么是Html5触屏版? 采用最新HTML5技术,无需下载安装.无需下载升级,使用移动设备浏览器,就能访问自适应屏幕大小的访问界面,微信也能扫描访问. 为什么已经有PC网页版和移动端APP版还需要Html5触屏版? 首先PC网页版是基于传统PC上的浏览器使用,在移动浏览器上会出现屏幕大小伸缩,不适合在移动终端浏览器上使用. 而移动端APP版需要按照才能使用,基于Html5触屏版使用手机浏览器就能访问. Html5触屏版与传统的手机wap网页的区别? 传统的wap网页更适合之前的功能机,html5

jQuery手机触屏左右滑动切换栏目和焦点图

实现jQuery手机触屏左右滑动用到一个滑动插件TouchSlide,大家可以百度下. 首先来看看左右滑动切换焦点图: JQuery代码 $(function(){ TouchSlide({ slideCell:"#slideBox", titCell:".myhd ul", //开启自动分页 autoPage:true ,此时设置 titCell 为导航元素包裹层 mainCell:".bd ul", effect:"leftLoop

Mobiscroll手机触屏日期选择器

   最近在制作jquery mobile因要用到日历控件,突然发现Mobiscroll非常不错.于是摘下来记录. A Mobiscroll是一个用于触摸设备(Android phones.iPhone. iPad.Galaxy Tab)的日期和时间选择器jQuery插件.可以让用户很方便的只需要滑动数字就可以选择日期.Mobiscroll作为一款jQuery日期插件可以让用户自定义主题,完全通过CSS文件修改样式,经过测试可以完美使用在iOS4.Android 2.2. Android 2.3

js手机触屏轮播效果

以前自己用纯js写的,找了N就都没找到,还是从同事哪里重新拿过来的,仅是备忘,看过新浪新闻的手机触屏端后,自己写了个效果,比新浪的省代码多了 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Cache-Control&