HTML5触屏界面设计与开发

本文探讨了如何优化HTML5触屏页面的加载速度,包括合并CSS,脚本置底,调整图片大小和使用CDN。接着讨论了浏览器缓存、轻触事件、CSS过渡和JavaScript性能优化。还介绍了处理移动端手势操作,如滚动、滑动、缩放和方向改变的策略,以及解决设备缩放和固定定位的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1提高第一次加载的速度

加载页面的顺序

解析域名

发起请求

下载相应

渲染页面


导致页面加载缓慢的几个原因

1HTTP连接数太多

2总的字节数太大

3等待时的渲染阻塞

4网络延迟

5缓存能力差


怎么解决这些常见的问题

1请求数太多

我们可以把需要的css混合成一个文件,使用css每题查询的方法来带图link元素上使用media属性

<link rel="stylesheet" media="only screen and (max-width:800px)“ href="demo.css">

转换成

@media only screen and (max-width:800px){}

不知道以上代码代表什么意思的同学可以先学习一下响应式布局

不幸的是,通过这样的改变我们并没有发现加载速度改变有多大

所以我们要继续查看究竟是什么使页面加载速度减慢


在查看瀑布图的时候我们发现在加载jQuery完成之前,图像几乎没有开始加载

解决这个的方法比较简单,就是把脚本标签置于页面底部。这样一来。当脚本还在加载时,用户不会看到一个空白页,而且其他的内联的任何资源会和脚本一起并行下载。


其次我们将会发现导致页面加载速度变慢的一大原因就是图片太大。

这里我概括了几种解决办法

1降低图片质量(显然我们不太愿意使用这种方法,这样势必会降低用户体验)

2启用cdn(这是我在阅读相关书籍之前使用的办法,现在网上有许多提供cdn服务的网站,但这也是一个治标不治本的方法)

3根据你所需要的大小加载不同大小的图片,避免浪费(当然通过这种方法在加上cdn的运用应该是不错的效果)


第三个就需要我们去了解用户的使用设备(比如视网膜屏幕和普通屏幕的区别,电脑设备和移动设备的区别)



以上我提到了如何加快第一次的访问速度,接下去我会讲如何加快下一次的访问速度

这里主要运用到了浏览器的缓存功能

主要有常规浏览器缓存,本地存储和应用缓存


接下来要说的就是触屏设备上的轻触和点击事件

我们应该都知道在触屏设备上我们可以使用click时间,但是其为了区分单击还是双击有300ms的延迟,就是这大约300ms的延迟让我们的用户体验降到谷底

为了解决这个移动浏览器有四种类型的触摸事件。

touchstart          触摸开始

touchmove         触摸点改变

touchend           触摸结束

touchcancel       触摸被取消

ie10上支持相同的事件但是有不同的语法

成为pointer 指针

MSPointerDown   触摸开始

MSPointerMove   触摸点移动

MSPointerUp       触摸结束

MSPointerOver    触摸点移动到接触点之上

MSPointerOut      触摸点离开元素


CSS过渡,动画和变换

性能优化

不要使用setTimeout来实现动画,一旦计时器里面的动画运行过慢会产生卡帧。

使用css变换来取代绝对定位(position)

可以采用css动画的形式


javascript的性能优化

1javascript操作dom的代价特别大,比较读取dom中的值和读取js对象中的值,前者所用的时间是后者的七倍之多

所以当获取到dom结构时我们将它储存在一个变量中,利用DOM的指针,避免二次获取相同的dom。


2给用户反馈的优先级是最高的

javascript是单线程的,所以在同一时间只能做一件事。这个线程与操作dom的线程是同一个线程,它被称为UI线程。就像把任务推到一个对列中,队列中的任务会在线程变得空闲时执行。

3延迟执行

当浏览器给用户做反馈时,如果我们需要执行一个类似AJAX这样消耗比较大的操作,我们可以延迟执行。


移动端的手势操作

滚动与滑动

做过移动端开发的人应该都碰到过一个问题

overflow:auto 在某些安卓设备上失效

当然我们也可以避免使用overflow:auto在移动设备上

但当我们必须使用时我们也有两个方法避免以上的问题

使用overthrow.js或者Iscoll来实现overflow.



方向改变

来解决移动设备上横屏与竖屏的布局问题

可以通过@media screen and (orientation:landscape){}

来设置横屏时相应的布局


移动设备的设备上的缩放问题

固定定位和缩放不能很好的在一起工作。在安卓设备中不能同时使用,在ios中会放大整个页面并且产生不可预知的结果。所以如果应用固定定位,你需要在viewport元素属性里添加user-scaleble=no.

1.viewport
这种方法,不是所有的浏览器都兼容
<meta name="viewport" content="width=640,minimum-scale=0.5,maximum-scale=1.0,user-scalable=no, initial-scale=1.0" />
2.百分比
这种方法,可以兼容大部分浏览器,但是修改幅度比较大
.main .login .txt1{margin-top:8.59375%; position:relative;}
3.css transform
这种方法,可以兼容大部分浏览器,但是页面的位置是居中的
.w320
{
transform: scale(1,1);
-ms-transform: scale(1,1); /* IE 9 */
-webkit-transform: scale(0.8,0.8); /* Safari and Chrome */
}
4.使用响应式布局,但是这样的话得做两个两套界面
<link rel=“stylesheet” type=“text/css” media=“only screen and (max-width: 480px),only screen and (max-device-width: 480px)” href=“link.css”/>




双指实现缩放和其他复杂的手势

以上我们提到缩放与固定定位的使用,一旦上面不使用固定定位,能实现缩放,但往往是整个页面,而不是你所希望的元素,所以我在这里说了更详细的可以操作你希望的元素的手势

基本的触摸事件我已经在上面写过

touchstart          触摸开始

touchmove         触摸点改变

touchend           触摸结束

touchcancel       触摸被取消

ie10的事件我就不重新写了


双指实现缩放效果

从接触点很容易得到一个缩放值。在webkit中,touch事件有一个缩放值。

通常情况下。当你缩放一个对象时,他将围绕中心去缩放。在CSS变换中这被称为变换原点(transform-origin)

为了得到正确的效果,图像应当围绕接触点的中心去缩放。即变换原点为两接触点之间的中心。

具体的代码实现我就不写出来了。想要查看效果的可以用手机登入http://2.memoryzyz.applinzi.com/mobile-demo/来查看

如果想要源码可以联系我邮箱2410823638@qq.com



 《HTML5触摸界面设计开发》专注于触摸界面的开发,内容的结构和优化网站的思路大概一致。上半部分涵盖了能使各类网站,特别是移动网站变快的基本概念。第2章和第3章告诉你如何创建一个简单的网站,并能快速加载。第4章可以帮助你使用缓存来提高用户再次访问时的速度。第5章是关于要摒弃一次性的页面加载方式和重构应用程序以使实际上和感觉到的性能都达到最优的。书的后半部分是专门讲触摸界面的,特别是尽可能地让它们更平稳和快速。   《HTML5触摸界面设计开发》适合具有一定经验的Web开发者阅读参考。 目录 第1章 移动设备概述 0 1.1 触摸设备和桌面设备之间的差异 2 1.2 广泛使用的设备 3 1.3 HTML 56 1.4 神秘谷,是什么让触摸界面反应灵敏? 7 1.5 总结 9 第2章 创建一个简单的内容型网站 10 2.1 选择一个观念:移动优先或置后 12 2.2 创建标记 13 2.3 奠定基础的标签 15 2.4 理解 Viewport 15 2.5 响应式的CSS 19 2.6 总结 24 第3章 提高第一次加载的速度 25 3.1 浏览器是如何加载页面的 27 3.2 为什么页面加载缓慢? 27 3.3 用YSlow和PageSpeed提升速度 30 3.4 解决常见的问题 33 3.5 将它们全部放在一起 41 3.6 总结 41 第4章 加快下一次访问的速度 42 4.1 在HTTP中缓存 44 4.2 为移动优化45 4.3 使用网络存储(Web Storage) 46 4.4 应用缓存(Application Cache) 53 4.5 总结 57 第5章 使用PJAX提升触摸体验 58 5.1 页面加载的代价 60 5.2 浏览器历史API 62 5.3 添加PJAX 69 5.4 总结 77 第6章 轻触VS单击:基本的事件处理 78 6.1 是什么让轻触不同? 80 6.2 触摸事件简介 80 6.3 处理轻触 83 6.4 总结 89 6.5 项目 89 第7章 CSS过渡、动画和变换 90 7.1 动画元素 92 7.2 CSS变换 105 7.3 总结 112 7.4 项目 112 第8章 JavaScript性能最优化 113 8.1 性能测试和调试 115 8.2 只写入DOM 116 8.3 给用户反馈的优先级是最高的 117 8.4 将它们一起使用:无限滚动 118 8.5 总结 127 8.6 项目 127 第9章 手势的基本内容 128 9.1 为什么用手势呢? 130 9.2 创建一个循序渐进增强的触摸控制 131 9.3 创建一个触摸控制的灯箱(lightbox) 136 9.4 总结 150 9.5 项目 150 第10章 滚动滑动 151 10.1 滚动 153 10.2 布局失效 159 10.3 让鸟类浏览工具可滑动 161 10.4 总结 176 10.5 项目 177 第11章 双指缩放和其他复杂的手势 178 11.1 了解多点触摸的限制和支持情况 180 11.2 处理多点触摸 180 11.3 处理双指缩放 185 11.4 总结 195 11.5 项目 195
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值