习惯了开发典型的面向电脑端浏览器的网站在开发手机端网站或者移动App的时候面对很多新的问题,这些新的问题,在我看来或多或少会给浏览者在使用网站或App的时候带来不好的用户体验,对于一个产品级应用,用户体验应该是在开发过程中最先也是最需要考虑的。这些问题,大部分是click事件带来的触摸方面的不足,这里简单总结记录,文中内容来自Stephen Woods写的《HTML5触摸界面设计与开发》这本书。

  1. 移动设备和桌面设备之间的差异

    规格,也就是尺寸

    移动设备的计算能力不足

    人们使用触摸设备的方式不同(现在绝大多数智能手机都是触摸设备)    这也是本文主要涉及到的内容。

  2. 使用PJAX提升触摸体验

    所谓的PJAX,就是用pushState和Ajax结合起来,Ajax负责更新内容,pushState负责更新URL。

    为什么不仅仅使用Ajax?

    大多数用户都知道URL是什么,这本书《HTML5触摸界面设计与开发》给出了一个忠告(或者在其他地方也可以看得到),破环链接是一个极大的错误。所以(我把这句话当成正确的,希望以后可以理解),如果用JavaScript去改变页面中的URL地址,当用户单击的时候,我们将会破坏所有的URL,更好的做法是使用HTML5浏览器历史API,因为保持链接的正确性才是最重要的。

    浏览器历史API

    想像一下,浏览器历史,就像一堆卡片一样,每一张卡片代表了用户曾经访问过的一个URL。浏览器历史是一个很大的栈,它存储了浏览器标签页的访问历史,这也是后退按钮能起作用的原因。浏览器历史API为我们提供了两个新的方法去操作这个栈:pushState和replaceState。

    pushState,允许我们在前面加入新的卡片,并且移除它前面所有的卡片。这和用户单击一个链接大致相同:它加入了一个新的状态项,如果它处在历史栈的中间位置,在它前面的所有链接都将丢失。replaceState允许我们替换当前的卡片,且并不影响栈的其他部分。浏览器历史API还提供了一个popstate的事件,它将在用户因使用"后退"或"前进"按钮而导致状态堆位置发生改变时候触发。

    1. 用pushState改变历史

      history.pushState方法有三个参数:状态、标题和URL,这里标题的参数目前没有任何浏览器支持,也不是指窗口的标题,所以只需要传null

       

    2. 监听popstate事件

HTML5与触摸界面的更多相关文章

  1. HTML5+CSS3设计界面

    近期在做一个关于房屋装修的手机上的项目,前台是用H5+C3完毕的,挂在微信上.全部相对来说不是非常难. 这段时间通过敲Html5+Css3.分享一些自己觉得值得学习的知识. 都非常easy.自己操作一 ...

  2. html5的触摸事件

    1.触摸事件有哪些 touchstart,touchmove,touchend 2.分别什么时候触发 touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发. touc ...

  3. html5做webAPP界面适配总结

    一.px em rem px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相 ...

  4. 新手入门HTML5有什么推荐的书籍?

    很多想迈入HTML5开发行列的人,都会问一个问题:要成为一个更好的开发人员,我应该读哪些书?有哪些HTML5开发的书籍推荐吗? 有人说开卷有益,读万卷书行万里路;有人说,书不在多,精益求精;有人说,书 ...

  5. 关于HTML5,最牛逼的10本书!

    关于HTML5,最牛逼的10本书! 关于HTML5,最牛逼的10本书.rar HTML5+CSS3从入门到精通 李东博 著 推荐指数:★★★☆ 简介:本书通过基础知识+中小实例+综合案例的方式,讲述了 ...

  6. 20个专业H5(HTML5)动画工具推荐

    AnimateMate 可能是最好的 Sketch 动画插件.Sketch 目前被广泛应用于 HTML5 的原型界面设计,或者被应用于数据可视化的,动画部分则一般经由软件 Principle 等实现. ...

  7. PJAX实现

    一.浏览器历史API 浏览器历史就像一堆卡片,如下所示:

  8. Kinect for Windows SDK 1.8的改进及新特性

    今年3月, 微软推出了Kinect for Windows SDK 1.7 更新,包括了手势识别 Kinect Interactions 和实时 3D 建模 Kinect Fusion 两项新技术. ...

  9. cubic-bezier贝塞尔曲线css3动画工具

    今天在一本叫<HTML5触摸界面设计与开发>上看到一个做弹跳球的复杂动画效果,首先加速下降,停止,然后弹起时逐渐减速.是用cubic-bezier贝塞尔曲线来完成的.所以特地去学习了一下关 ...

随机推荐

  1. ajax回调函数Status问题

    function readyDo() {//            alert(xhr.readyState + "分" + xhr.Status);            if ...

  2. BI之SSAS完整实战教程3 -- 创建第一个多维数据集

    上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...

  3. csharp: 百度语音合成

    public string API_id = "3333"; //你的ID public string API_record = null; public string API_r ...

  4. js 创建对象 经典模式

    1. 概述 通过构造函数创建对象, 有时忘记了写new, 这时函数就会返回undefined 可以创建一个函数createXXX, 在内部封装new. function Student(props){ ...

  5. 彻底卸载JDK的-并只依赖配置环境安装JDK(不依赖注册表)-解决Error opening registry key'software\Javasoft\Java Runti问题

    一.备份安装好的绿色版JDK a.重新安装JDK到任意目录,假设这个目录是C:\java.b.将装好的JDK,JRE拷贝到任意一个其他目录,如D:\bak,这样做的目的主要是为了备份JDK.(建议打成 ...

  6. OC数组排序

    NSArray *array = @[@"tailong", @"kaersasi", @"airuiliya", @"yingl ...

  7. Android源码分析之AsyncTask

    AsyncTask相信从事Android开发的同学都不陌生,基本都应该用到了,和以前一样我们还是先来看看此类的summary.AsyncTask 可以确保更合理.容易的使用UI线程.这个类是设计用来执 ...

  8. UITableVIew 滚动流畅性优化

    影响UITableViewUITableView滚动的流畅性原因: 1. 在代理方法中做了过多的计算占用了 UI 线程的时间 2.同上 3.Cell 中 view 的组织复杂,比如使用layer并不会 ...

  9. [android] 手机卫士自定义控件的属性

    上一节完成的自定义组合控件,灵活性不够,控件的显示信息上,仿照系统属性,自定义自己的属性 上一节组合控件SettingItemView中有三个控件,分别是TextView大标题,TextView描述, ...

  10. 斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据

    这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简 ...