移动端WEB前端开发最佳实践

移动端WEB前端开发最佳实践

  • Safari,Android Browser,Chrome都是以WebKit为核心的
  • 移动设备和PC之间的页面现实存在差异(Safari中定义了viewport)
  • 在移动设备和桌面端WEB前端开发中,事件绑定存在差异(移动触点)
  • 页面控件设计存差异(点触不灵敏,虚拟键盘弹出框)
  • 移动设备的网络带宽普遍比PC慢,移动页面要设置更简洁

PC页面兼容移动设备

  • 使用流式布局
  • 借助CSS Media queries(媒体查询)技术
  • 使用合适的图片显示兼容方案
  • 保持页面简洁,不要使用页面不兼容的技术(Flash技术降级方案,尽量不使用,使用HTML5 Canvas,避免使用播放,网络连接,存储,访问本地文件等)
  • 设置viewport

    • 增加链接和按钮的可操作区域
    • 使用响应式设计框架(bootstrap,Zurb Foundation,Skeleton)
    • 使用工具检查网页的移动设备兼容性:MobiReady,W3C mobileOK Checker,iPadPeek让用户输入测试网址,Howtogomo除了显示截屏还提供建议

开发移动WEB站点的准备工作

  • 确定支持的移动设备(尺寸,DPI,内存,CPU性能,常用浏览器版本等)
  • 处理和桌面端主网站的交互(User-Agent,用js判断推荐使用Mobile-Detect,isMobile,提供了很多的接口调用,最简单包括isMobile,isTablet)
  • 设计移动站点为单页模式,避免页面跳转
  • 选择一个合适的前端框架(JQuery-mobile,Sencha Touch,Kendo-UI,Ionic)
  • 如何调试移动页面(chrome自带的DEV,包括设备型号,屏幕尺寸,User Agent等)

移动端的最佳实践

  • HTML最佳实践:

    • 在页面head中添加必要的meta和link信息:
          <!-- 声明文档使用的字符编码 -->
                    <meta charset=‘utf-8‘>
                    <!-- 优先使用 IE 最新版本和 Chrome -->
                    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
                    <!-- 页面描述 -->
                    <meta name="description" content="不超过150个字符"/>
                    <!-- 页面关键词 -->
                    <meta name="keywords" content=""/>
                    <!-- 网页作者 -->
                    <meta name="author" content="name, [email protected]"/>
                    <!-- 搜索引擎抓取 -->
                    <meta name="robots" content="index,follow"/>
                    <!-- 为移动设备添加 viewport -->
                    <meta name="viewport" content="initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no">
                    <!-- `width=device-width` 会导致 iPhone 5 添加到主屏后以 WebApp
                    全屏模式打开页面时出现黑边 http://bigc.at/ios-webapp-viewport-meta.orz -->
                    <!-- iOS 设备 begin -->
                    <meta name="apple-mobile-web-app-title" content="标题">
                    <!-- 添加到主屏后的标题(iOS 6 新增) -->
                    <meta name="apple-mobile-web-app-capable" content="yes"/>
                    <!-- 是否启用 WebApp 全屏模式,删除苹果默认的工具栏和菜单栏 -->
                    <meta name="apple-itunes-app" content="app-id=myAppStoreID,
                    affiliate-data=myAffiliateData, app-argument=myURL">
                    <!-- 添加智能 App 广告条 Smart App Banner(iOS 6+ Safari) -->
                    <meta name="apple-mobile-web-app-status-bar-style" content="black"/>
                    <!-- 设置苹果工具栏颜色 -->
                    <meta name="format-detection" content="telphone=no, email=no"/>
                    <!-- 忽略页面中的数字识别为电话,忽略email识别 -->
                    <!-- 启用360浏览器的极速模式(webkit) -->
                    <meta name="renderer" content="webkit">
                    <!-- 避免IE使用兼容模式 -->
                    <meta http-equiv="X-UA-Compatible" content="IE=edge">
                    <!-- 不让百度转码 -->
                    <meta http-equiv="Cache-Control" content="no-siteapp" />
                    <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
                    <meta name="HandheldFriendly" content="true">
                    <!-- 微软的老式浏览器 -->
                    <meta name="MobileOptimized" content="320">
                    <!-- uc强制竖屏 -->
                    <meta name="screen-orientation" content="portrait">
                    <!-- QQ强制竖屏 -->
                    <meta name="x5-orientation" content="portrait">
                    <!-- UC强制全屏 -->
                    <meta name="full-screen" content="yes">
                    <!-- QQ强制全屏 -->
                    <meta name="x5-fullscreen" content="true">
                    <!-- UC应用模式 -->
                    <meta name="browsermode" content="application">
                    <!-- QQ应用模式 -->
                    <meta name="x5-page-mode" content="app">
                    <!-- windows phone 点击无高光 -->
                    <meta name="msapplication-tap-highlight" content="no">
                    <!-- iOS 图标 begin -->
                    <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-57x5-precomposed.png"/>
                    <!-- iPhone 和 iTouch,默认 57x57 像素,必须有 -->
                    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/apple-touch-icon-114x14-precomposed.png"/>
                    <!-- Retina iPhone 和 Retina iTouch,114x114 像素,可以没有,但推荐有 -->
                    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144x14-precomposed.png"/>
                    <!-- Retina iPad,144x144 像素,可以没有,但推荐有 -->
                    <!-- iOS 图标 end -->
                    <!-- iOS 启动画面 begin -->
                    <link rel="apple-touch-startup-image" sizes="768x1004" href="/splash-screen-768x1004.png"/>
                    <!-- iPad 竖屏 768 x 1004(标准分辨率) -->
                    <link rel="apple-touch-startup-image" sizes="1536x2008" href="/splash-screen-1536x2008.png"/>
                    <!-- iPad 竖屏 1536x2008(Retina) -->
                    <link rel="apple-touch-startup-image" sizes="1024x748" href="/Default-Portrait-1024x748.png"/>
                    <!-- iPad 横屏 1024x748(标准分辨率) -->
                    <link rel="apple-touch-startup-image" sizes="2048x1496" href="/splash-screen-2048x1496.png"/>
                    <!-- iPad 横屏 2048x1496(Retina) -->
                    <link rel="apple-touch-startup-image" href="/splash-screen-320x480.png"/>
                    <!-- iPhone/iPod Touch 竖屏 320x480 (标准分辨率) -->
                    <link rel="apple-touch-startup-image" sizes="640x960" href="/splash-screen-640x960.png"/>
                    <!-- iPhone/iPod Touch 竖屏 640x960 (Retina) -->
                    <link rel="apple-touch-startup-image" sizes="640x1136" href="/splash-screen-640x1136.png"/>
                    <!-- iPhone 5/iPod Touch 5 竖屏 640x1136 (Retina) -->
                    <!-- iOS 启动画面 end -->
                    <!-- iOS 设备 end -->
                    <meta name="msapplication-TileColor" content="#000"/>
                    <!-- Windows 8 磁贴颜色 -->
                    <meta name="msapplication-TileImage" content="icon.png"/>
                    <!-- Windows 8 磁贴图标 -->
                    <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml"/>
                    <!-- 添加 RSS 订阅 -->
                    <link rel="shortcut icon" type="image/ico" href="/favicon.ico"/>
                    <!-- 添加 favicon icon -->
                    <!-- sns 社交标签 begin -->
                    <!-- 参考微博API -->
                    <meta property="og:type" content="类型" />
                    <meta property="og:url" content="URL地址" />
                    <meta property="og:title" content="标题" />
                    <meta property="og:image" content="图片" />
                    <meta property="og:description" content="描述" />
                    <!-- sns 社交标签 end -->
    • 利用移动设备的便利性(GPS功能等)
        <a href="tel:1-406-666-xxxx">1-406-666-xxxx</a>
        <a href="sms:1-406-666-xxxx">1-406-666-xxxx</a>
    • 不要使用iframe,谨慎使用table,尽量使用ul,ol代替table来显示数据
    • 如果必须使用table的解决方法:
      • 按照显示数据的优先级,在小屏幕设备中隐藏优先级低的数据列
      • 把表格的横向排列改成纵向排列
      • 链接引入用网页提供的API,内容用XML或者JSON来引入
  • CSS最佳实践:
    • 使用相对单位设置尺寸元素
    • 点击控件设置足够大的尺寸
    • 可点控件之间留足够大的空间
    • 尽量少用图片,使用内联图代替小图片
    • 使用图片:web fonts,font Awesome,Bootstrap Glyphicons等
    • 把小图片转化成Base64格式,并借助Data URLs技术把图片直接写在CSS或者HTML文档中,减少图片的请求数目
    • 不要使用伪类hover设置悬停效果
    • 设置合理的字体大小(16px)和行高(1.5px)
    • 在不需要选中文字的区域禁用文字选中功能
  • JS最佳实践:
    • 使用移动平台中特有的事件处理(手势触摸touchstart,touchmove,touchend,touchcancel)
    • tap和taphold事件,横竖切换事件(orientationchange)
    • 谨慎使用标准对话框,避免弹出窗口(window.open)
    • 谨慎使用Timer(避免使用准确控制时间的任务)
时间: 2024-08-02 02:48:36

移动端WEB前端开发最佳实践的相关文章

入门书籍 web前端开发最佳实践

高效web前端开发  book PageSpeed  出自google公司  是一款  免费的工具  性能分析 Timeline网页交互  和渲染  所要花费的时间 Profile谁  可以查看网页cpu以及内存占有的情况报告 Audits  中提供了各种资源及配置的优化建议和未使用的css规则的列表 代码的压缩 文本服务器开启Gzip压缩. UglifyJs  不仅仅是一个压缩工具,同事具有JS语法分析和代码美化工能 图片压缩工具  以在线工具居多  TinyPNG  压缩  PNG格式图片.

&lt;读书笔记&gt;《Web前端开发最佳实践》

P77 P89 CSS Reset P94 给CSS样式定义排序    排序工具:CSScomb P97 什么是CSS的权重?权重是指选择符的优先级 P100 工具:Sass Less P101 框架:YUI.ExtJS P102 hack代码,不易理解且维护困难 P103 条件注释 P104 em px % 2016.3.8 P110 CSS的匹配原理和我们习惯的匹配过程是相反的,它是从右到左进行匹配的. P111 CSS选择器定义的最佳实践(四个避免): 1.* { } 2.referenc

WEB前端开发最佳实践(2)

样式和结构分离 HTML页面链接一个CSS(最优),提高加载速度 HTML内嵌CSS(单一页面最佳,减少加载CSS样式文件的请求数目,加快加载速度 内联CSS样式,可以使用JS动态来统一修改,很少使用,JQ中使用其实现动画效果 在CSS样式文件中引用CSS文件,避免使用 添加JS禁用提示信息 使用noscrpt,HTML4只在body中起作用,HTML5中可以出现在head中,支持HTML,不支持XHTML 最好使用noscript,采用渐进增强的模式,平稳降级 添加必要的meta的标签 met

WEB前端开发最佳实践(3)

选择器注意 尽量不使用ID选择器 减少子选择器的层级(less和Sass的滥用) 使用组合CSS类选择器 兼容IE浏览器 兼容旧浏览器的代码,被称为hack代码 熟悉IE浏览器中常见的兼容样式 分离样式兼容代码 em,px,% px:相对尺寸,但由于同环境,又是绝对尺寸 em:应用元素上字体大小的两倍,%:相对于父元素的百分比 尽量设置相对尺寸 只有在可预知元素尺寸的情况下才使用绝对尺寸 使用em设置字体的大小 使用高效的CSS选择器 匹配原理:从右到左 避免使用通配符 避免使用标签和单个属性选

《web前端开发最佳实践》党建 摘要

1. 各种调试工具.ie dev toolbar. chrome developer tools. firebug .fiddler 2. 压缩合并工具 3. fis 4. 性能工具yslow.  pagespeed 5. 压缩 gzip js压缩 uglifyjs. yui compressor.  closoure compiler. webstorm file watcher css 压缩   css compressor 6. 规范 层级id 公开函数首字母大写 $前缀 输入框的tab顺

【WEB前端开发最佳实践系列】JavaScript篇

一.养成良好的编码习惯,提高可维护性 1.避免定义全局变量和函数,解决全局变量而导致的代码"污染"最简单的额方法就是把变量和方法封装在一个变量对象上,使其变成对象的属性: 1 var myCurrentAction = { 2 length : 0 , 3 init : function(){}, 4 action : function(){} 5 } 还可以将全局的变量包含在一个局部作用域中,然后在这个作用域中完成这些变量的定义以及变量使用的逻辑: 1 (function(){ 2

Web 前端优化最佳实践

面向内容的优化规则目前有 10 条. 1. 尽量减少HTTP请求 (Make FewerHTTPRequests) 作为第一条,可能也是最重要的一条.根据 Yahoo! 研究团队的数据分析,有很大一部分用户访问会因为这一条而取得最大受益.有几种常见的方法能切实减少HTTP请求: 1) 合并文件,比如把多个CSS文件合成一个: 2) CSSSprites 利用CSSbackground 相关元素进行背景图绝对定位:参见:CSS Sprites: Image Slicing’s Kiss of De

web移动开发最佳实践之 css篇

web移动开发最佳实践之 css篇 一.css概述 css即层叠样式表(Cascading Style Sheets),它的作用主要是控制页面元素的样式,包括布局.颜色.字体.字号.空白.边框.属性等等.css的出现使得html的内容和样式分离,极大的提高了工作效率. 目前最新的标准是css3,下面几节将介绍在使用css过程中应遵循的最佳实践方案. 二.使用高效的css选择器 欲创建一个高效的web应用,你要了解浏览器是如何读取你的web页面并呈现出来的.当浏览器读取你的html文档时,它首先对

web移动开发最佳实践之 css篇 ——转

 web移动开发最佳实践之 css篇 一.css概述 css即层叠样式表(Cascading Style Sheets),它的作用主要是控制页面元素的样式,包括布局.颜色.字体.字号.空白.边框.属性等等.css的出现使得html的内容和样式分离,极大的提高了工作效率. 目前最新的标准是css3,下面几节将介绍在使用css过程中应遵循的最佳实践方案. 二.使用高效的css选择器 欲创建一个高效的web应用,你要了解浏览器是如何读取你的web页面并呈现出来的.当浏览器读取你的html文档时,它首先