移动端前端注意事项

整  理:晋哲

时  间:2015-12-09

说  明:移动端页面需要注意的细节问题


一、移动端固定<meta>标签
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">

解释:
第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;
第二个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;
第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码

二、细节样式处理,去除移动设备默认交互样式

1、解决 iPhone 横屏时默认会放大文字的问题,设为100%关闭字体大小自动调整功能
html{
 -webkit-text-size-adjust: 100%;
 -ms-text-size-adjust: 100%;
 text-size-adjust: 100%;
}

2、使用无衬线字体
body{font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;}

3、禁止选中文本(有无文本选中需求,此为可选项)
html, body{
 -webkit-user-select: none;
 user-select: none;
}

4、快速滚动和回弹的效果
body{-webkit-overflow-scrolling: touch;}

5、禁止长按链接与图片弹出菜单
a, img{-webkit-touch-callout: none;}

6、去除移动端点击事件出现的背景阴影,也可更换颜色
a, input{-webkit-tap-highlight-color:transparent;}
注:还有一种妥协的方法是把页面非真实跳转链接的<a>标签换成其它标签,可以解决这个问题。

7、移动端清除输入框内阴影
在iOS上,输入框默认有内部阴影,但无法使用 box-shadow 来清除,如果不需要阴影,可以这样关闭:
input, textarea{
 border: 0; /* 方法1 */
 -webkit-appearance: none; /* 方法2 */
}

8、输入框点击默认会有蓝色外边框线
input{outline: none;}

三、HTML 代码相关

1、自适应布局模式
在编写CSS时,不建议把容器的宽度、高度定死。为达到适配各种手持设备,建议使用自适应布局模式,保证页面在各类浏览设备上都能够正常的显示,无需再次考虑设备的分辨率。

2、块级化<a>标签,或按需求尽可能扩大<a>标签囊括的范围
在触控手机上,为提升用户体验,尽可能的保证用户的可点击区域较大。
p1
3、动画效果中,使用 translate 比使用定位性能高

四、JS 事件相关

1、jQuery文件过大,移动端优先考虑使用zepto.js。实际情况中使用jQuery插件不兼容zepto时再考虑使用jQuery

2、click 事件存在 300ms 的延迟
在手机上绑定 click 事件,会使得操作有 300ms 的延迟,体验并不是很好,通常会使用封装的 tap 事件来代替 click 事件。

五、图片相关

1、使用<img>标签时,需根据实际需求设置[width:100%;]自适应撑满区域,还是设置固定宽高。

2、使用背景图片时,需注意实际用图与移动端呈现尺寸的比例为2:1,所以移动端借助[background-size]属性进行比例缩小,相应的按比例缩小[width]、[height]、[background-position]的值。
p2
3、可以合并的图标图片,尽量整合一张,并进行压缩

4、合并Sprite图时每个图片之间必须留有间距

5、能用CSS样式实现的,代替使用图片

6、较大的背景图片、banner图片等尺寸宽度不需要超过640px,切图时先改变图像大小,再进行压缩。

发表评论