移动设备的高速发展给用户带来了非常大的便利。用户使用Android、iPhone和其他移动设备非常easy接入互联网。

移动设备对网页的性能要求比較高。以下就说说Mobile Web开发的一些心得。

Viewport

当你用iPhone訪问一个没有面向移动设备优化过的站点时(最好选取960px宽度的站点)。你会发现iPhone上面刚好能够把整个页面显示出来,可是页面被缩小了许多。字体很小。这其实是Sarari默认把自己当成980px宽度来处理的,而全部iPhone(竖屏)的真实宽度为320px,其实差点儿全部的移动设备都有类似的情况,iPhone的请參考iPhone
5 Display Size and Web Design Tips
。这就牵扯到Viewport的概念了。

Viewport是浏览器的可视区域,也是浏览器的宽度,在PC上面问题比較简单,宽度是多少就多少。可是在移动设备上,浏览器尝试去把整个页面都显示出来,所以就会Viewport值不准确的情况。比如上面提到的Safari从iPhone那里获取到宽度是980px(浏览器仅仅能从系统那里获取宽度)。所以我们要做第一件事就是要浏览器用真实的宽度去解析页面,代码例如以下:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

"width=device-width"表示浏览器用它自己真实的宽度,如iPhone上面就是320px,initial-scale=1.0表示默认不进行缩放。

关于Viewport很多其它请參考:

redirectlocale=en-US&redirectslug=Mobile%2FViewport_meta_tag">Using
the viewport meta tag to control layout on mobile browsers

补充一下:设备像素不等于CSS像素,比如用户放大页面300%。CSS像素也跟着放大300%,但设备像素肯定不会有变化。非常多设备为了保证良好浏览效果,一般会告诉浏览器一个假的分辨率,比如iPhone5s的设备分辨率是640x1136,可是却告诉浏览器它的分辨率是320x568(站点要加width=device-width,否则是980宽度),否则真的以640x1136在那点屏幕上进行浏览页面肯定要近视了。

响应式设计

移动设备的分辨率多种多样。这就要求我们要在全部设备上都能非常好的展示。而响应式设计就是非常好的解决方式。BootStrap等框架都号称移动优先,当然缺点是文件比較大,假设站点比較简单的话能够自己用百分比写写就能够了。很多其它响应式设计请參考:响应式设计介绍

图片精度

如今新的手机配置都比較高,绝大部分手机的像素比例(devicePixeRatio)都超过1,iPhone的Retina屏幕的像素比例为2,Nexus5的像素比例为3。

像素比例高的屏幕必需要有高清的图片,这样显示效果才好,比方iPhone5s的竖屏宽度为320px,可是仅仅有使用640px宽度的图片才干完美显示。

我们的开发经验是图片以iPhone5s为标准进行处理,就是在iPhone5s上面必须是高清显示,其他广大Anroid设备上自适应处理。

能够參考:移动Web——CSS为Retina屏幕替换图片

性能相关

  • Zepto.js

    jQuery很强大。可是它的体积比較大。即使是2.x的压缩版也有82KB。

    ZeptoJS号称迷你版jQuery,兼容大部分的jQuery API。它的大小仅仅有24KB,由于它仅仅支持移动浏览器,全部体积小,速度快。

  • Lazy load

    对于移动网页来说。真正消耗流量部分应该是图片部分。由于图片通常都比較大,所以我们能够使用Lazy Load的方式仅仅载入当前屏幕中的图片。由于用户非常多时候仅仅是看一下当前屏幕的内容就跳到下一页了。没有必要一次把全部图片都载入进来。

  • 其他

    为了提高性能和降低下载流量,我们能够压缩合并CSS,JS文件,对图片进行压缩处理,对图标进行合并等。

HTML5 & CSS3

移动设备上的浏览器都是比較新的浏览器,基本上都支持HMTL5和CSS3的新的功能。因此我们应该多使用它们。最起码我们能够使用CSS3的圆角效果来替换图片。以下列出一些很有用的CSS3特性。

  • rem

    CSS经常使用px, pt作为字体单位。可是它们的缺点是它们是绝对值。百分比(%)和em作为字体单位时大小,它们的值是由它们的父元素的字体大小决定的,优点是它的值是动态变化的。缺点是由于每一个元素的父元素的字体大小都不一样,因此各个em的大小也不一样。终于导致统一设置字体大小。

    而rem相对于百分比和em来说。它是相对于root 元素的字体大小而不是父元素,这样不论什么一个元素使用rem作为单位时它的參考单位都是一样的。

    这样我们就统一控制整个页面的字体大小了。

    请參考:CSS3的REM设置字体大小

  • 动画

    我们通经常使用JS来实现动画,比方jQuery的animation(),可是JS的性能比較原生的CSS3动画要差非常多。所以能用CSS3实现的动画就用CSS3实现。

參考文档

移动Web开发实践的更多相关文章

  1. Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》

    首先,简单介绍:Redis是一个基于内存的键值对存储系统,常用作数据库.缓存和消息代理. 支持:字符串,字典,列表,集合,有序集合,位图(bitmaps),地理位置,HyperLogLog等多种数据结 ...

  2. 移动Web开发实践——解决position:fixed自适应BUG

    在移动web中使用position:fixed,会踩到很多坑,在我之前的一篇文章<移动端web页面使用position:fixed问题总结>中已经总结了很多bug,但是在后续的开发中有关f ...

  3. 移动web开发实践-css3(1)盒模型display:-webkit-box;的使用

    提到移动布局不得不提到盒模型display:-webkit-box;这个属性,在移动布局中浮动已经不在重要,相反自适应成为主要的需求,所以display:-webkit-box;变得尤为重要. box ...

  4. 移动端字体缩放问题解决方案-摘自《html5移动web开发实践》

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)

    目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构   前言 学习Python也有一个半月时间了,学到现在感觉 ...

  6. 什么是 web 开发

    什么是 web 开发     这几天因为工作需要,了解了一下Web development 的技术路线,来源自     en.wikipedia.org/wiki/Web_development    ...

  7. 初次比较正式的IT职场面试后几点对自己web开发的思考

    昨天晚上参加一个web开发面试,对于还没有真正毕业的自己来说,web开发的面试不是第一次,暑假就面试几家公司,前几次的面试并没有发现自己对自己学习的专业知识有什么学习态度的问题,因为前几次的面试官都是 ...

  8. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  9. Redis在WEB开发中的应用与实践

    Redis在WEB开发中的应用与实践 一.Redis概述: Redis是一个功能强大.性能高效的开源数据结构服务器,Redis最典型的应用是NoSQL.但事实上Redis除了作为NoSQL数据库使用之 ...

随机推荐

  1. unittest编写Web测试用例

    案例:百度搜索关键词:“unittest” test_baidu.py: from selenium import webdriver from time import sleep import un ...

  2. 学习笔记6——插件 API,“过滤器”(Filters)和“动作”(Actions)

    WordPress 中有一种叫执行挂勾的机制,允许插件把一些功能“挂载”到 WordPress 当中.也就是说,在系统运行至某一个环节时,去调用插件内的一些函数.执行挂勾分为两种: 动作 (Actio ...

  3. x86保护模式 实模式与保护模式切换实例

    x86保护模式     实模式与保护模式切换实例 实例一 逻辑功能   以十六进制数的形式显示从内存地址110000h开始的256个字节的值    实现步骤: 1  切换保护方式的准备 2. 切换到保 ...

  4. 逻辑回归(Logistic Regression)算法小结

    一.逻辑回归简述: 回顾线性回归算法,对于给定的一些n维特征(x1,x2,x3,......xn),我们想通过对这些特征进行加权求和汇总的方法来描绘出事物的最终运算结果.从而衍生出我们线性回归的计算公 ...

  5. BZOJ 3196 二逼平衡树 ——树套树

    [题目分析] 全靠运气,卡空间. xjb试几次就过了. [代码] #include <cmath> #include <cstdio> #include <cstring ...

  6. BZOJ2245 [SDOI2011]工作安排 【费用流】

    题目 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由一名 ...

  7. bzoj1063【Noi2008】道路设计

    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1063 用一种划分方式将树划为重链和轻链,使得所有点到根节点的路径经过的轻链最大值最小 sol: ...

  8. cf682E Alyona and Triangles

    You are given n points with integer coordinates on the plane. Points are given in a way such that th ...

  9. Moya 与 RxSwift 使用

    如在OC中使用AFNetworking一般,Swift我们用Alamofire来做网络库.而Moya在Alamofire的基础上又封装了一层: 1.关于moya moya 官方说moya有以下特性-_ ...

  10. ubuntu下安装翻译软件

    原文: http://sixipiaoyang.blog.163.com/blog/static/6232358820144146386437/ Ubuntu下常用的翻译软件有StarDict,Gol ...