H5项目常见问题汇总及解决方案。本篇文章来源于QDFUNS文章–H5项目常见问题汇总及解决方案。因为这个平台收藏别人的文章后,如果文章被删除了,就找不到了。所以留个存档。
H5项目常见问题及注意事项
meta基础知识
H5页面窗口自动调整到设备宽度,并禁止用户缩放页面
1 | //一、HTML页面结构 |
空白页基本meta标签
1 | <!-- 设置缩放 --> |
其他meta标签
1 | <!-- 启用360浏览器的极速模式(webkit) --> |
font-family设置
1 | @ --------------------------------------中文字体的英文名称 |
电话短信邮件
1 | // 一、打电话 |
移动端touch事件
1 | /* 当用户手指放在移动设备在屏幕上滑动会触发的touch事件 */ |
点击延时响应
1 | 说明:移动设备上的web网页是有300ms延迟的,玩玩会造成按钮点击延迟甚至是点击失效。 |
Rentina显示屏
说明:retina屏是一种具备超高像素密度的液晶屏,同样大小的屏幕上显示的像素点由1个变为多个,如在同样带下的屏幕上,苹果设备的retina显示屏中,像素点1个变为4个。
在高清显示屏中的位图被放大,图片会变得模糊,因此移动端的视觉稿通常会设计为传统PC的2倍。
那么,前端的应对方案是:设计稿切出来的图片长宽保证为偶数,并使用backgroud-size把图片缩小为原来的1/2
1 | //例如图片宽高为:200px*200px,那么写法如下 |
图片链接高亮样式
1 | /ios用户点击一个链接,会出现一个半透明灰色遮罩, 如果想要禁用,可设置-webkit-tap-highlight-color的alpha值为0去除灰色半透明遮罩; |
美化表单元素
1 | //一、使用appearance改变webkit浏览器的默认外观 |
字体大小选择
1 | // 如需适配多种移动设备,建议使用rem。以下为参考值: |
移动端CSS样式
1 | //去掉webkit的滚动条——display: none; |
取消IOS设置input的英文首字母输入大写
1 | <input autocapitalize="off" autocorrect="off" /> |
手机拍照和上传图片
1 | //IOS有拍照、录像、选取本地图片功能,部分Android只有选择本地图片功能。Winphone不支持 |
屏幕旋转的事件和样式
1 | //JS处理 |
audio元素和video元素在ios和andriod中无法自动播放
1 | //音频,写法一 |
重力感应事件
1 | // 运用HTML5的deviceMotion,调用重力感应事件 |
微信浏览器页面字体调整修复
1 | //以下代码可使Android机页面不再受用户字体缩放强制改变大小,但是会有1S左右延时,期间可以考虑loading来处理 |
定位问题
1 | //fixed定位 |
播放视频不全屏
1 | <!-- |
JS判断设备
1 | function deviceType(){ |
JS判断微信浏览器
1 | function isWeixin(){ |
安卓BUG
android 2.3 bug
- @-webkit-keyframes 需要以0%开始100%结束,0%的百分号不能去掉
- after和before伪类无法使用动画animation
- border-radius不支持%单位,如要兼容,可以给radius设置一下较大的值
- translate百分比的写法和scale在一起会导致失效,例如:
-webkit-transform: translate(-50%,-50%) scale(-0.5, 1)
android 4.x bug
- 三星 Galaxy S4中自带浏览器不支持border-radius缩写
- 同时设置border-radius和背景色的时候,背景色会溢出到圆角以外部分
- 部分手机(如三星),a链接支持鼠标:visited事件,也就是说链接访问后文字变为紫色
- android无法同时播放多音频audio
消除transition闪屏
1 | .css { |
开启硬件加速
1 | //目前,像Chrome/Filefox/Safari/IE9+以及最新版本Opera都支持硬件加速,当检测到某个DOM元素应用了某些CSS规则时就会自动开启,从而解决页面闪白,保证动画流畅。 |
渲染优化
- 禁止使用iframe(阻塞父文档onload事件)
- 禁止使用gif图片实现loading效果(降低CPU消耗,提升渲染性能)
- 使用CSS3代码代替JS动画;
- 开启GPU加速;
- 使用base64位编码图片(不小图而言,大图不建议使用)
对于一些小图标,可以使用base64位编码,以减少网络请求。但不建议大图使用,比较耗费CPU。小图标优势在于:- 减少HTTP请求;
- 避免文件跨域;
- 修改及时生效;