SegmentFault 首页问答头条专栏讲堂 发现搜索 搜索问题或关键字 立即登录免费注册 在 SegmentFault,学习技能、解决问题 每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。 免费注册 立即登录 转载一篇关于移动端web常见问题解决方案 移动端web candice 2016年01月07日发布 赞 | 14收藏 | 187 15k 次浏览 出处:http://www.cnblogs.com/PeunZh...(中间很多问题都遇到过。) 还有些文章页不错: http://note.rpsh.net/posts/20... https://github.com/AlloyTeam/... 全文如下: 2013年底接触移动端,简单做下总结,首先了解下移动web带来的问题 设备更新换代快——低端机遗留下问题、高端机带来新挑战 浏览器厂商不统一——兼容问题多 网络更复杂——弱网络,页面打开慢 低端机性能差——页面操作卡顿 HTML5新技术多——学习成本不低 未知问题——坑多 面对这些问题,一开始我们只能在未知中试错,知道错误的方案才能更容易寻找正确的解决问题思路,2年多来,可看到移动web在业界不断趋向于成熟,各种框架和解决方案不断的涌现让移动端开发不再是个噩梦。 这几天把想到的一点经验先罗列出来,后续会持续更新,这篇文章可以给刚接触webapp开发的同学带来帮助,任何疑问欢迎留言探讨~ 目录(更新于20151222) meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 忽略将页面中的数字识别为电话号码 忽略Android平台中对邮箱地址的识别 当网站添加到主屏幕快速启动方式,可隐藏地址栏,仅针对ios的safari (new) 将网站添加到主屏幕快速启动方式,仅针对ios的safari顶端状态条的样式 viewport模板 (new) 常见问题 移动端如何定义字体font-family 移动端字体单位font-size选择px还是rem (new) 移动端touch事件(区分webkit 和 winphone) (new) 移动端click屏幕产生200-300 ms的延迟响应 触摸事件的响应顺序 什么是Retina 显示屏,带来了什么问题 ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉 部分android系统中元素被点击时产生的边框怎么去掉 winphone系统a、input标签被点击时产生的半透明灰色背景怎么去掉 webkit表单元素的默认外观怎么重置 webkit表单输入框placeholder的颜色值能改变么 webkit表单输入框placeholder的文字能换行么 IE10(winphone8)表单元素默认外观如何重置 禁止ios 长按时不触发系统的菜单,禁止ios&android长按时下载图片 禁止ios和android用户选中文字 打电话发短信写邮件怎么实现 模拟按钮hover效果 屏幕旋转的事件和样式 audio元素和video元素在ios和andriod中无法自动播放 摇一摇功能 手机拍照和上传图片 微信浏览器用户调整字体大小后页面矬了,怎么阻止用户调整 消除transition闪屏 开启硬件加速 取消input在ios下,输入的时候英文首字母的默认大写 android上去掉语音输入按钮 android 2.3 bug android 4.x bug 设计高性能CSS3动画的几个要素 fixed bug 如何阻止windows Phone的默认触摸事件 播放视频不全屏 (new) 常用的移动端框架 zepto.js iscroll.js underscore.js 滑屏框架 flex布局 (new) FastClick Sea.js meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 MSPointerDown——当手指触碰屏幕时候发生。不管当前有多少只手指 MSPointerMove——当手指在屏幕上滑动时连续触发。通常我们再滑屏页面,会调用css的- - html{-ms-touch-action: none;}可以阻止默认情况的发生:阻止页面滚动 MSPointerUp——当手指离开屏幕时触发 移动端click屏幕产生200-300 ms的延迟响应 移动设备上的web网页是有300ms延迟的,玩玩会造成按钮点击延迟甚至是点击失效。 以下是历史原因,来源一个公司内一个同事的分享: 2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展示在手机端上,使用了双击缩放(double tap to zoom)的方案,比如你在手机上用浏览器打开一个PC上的网页,你可能在看到页面内容虽然可以撑满整个屏幕,但是字体、图片都很小看不清,此时可以快速双击屏幕上的某一部分,你就能看清该部分放大后的内容,再次双击后能回到原始状态。双击缩放是指用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。原因就出在浏览器需要如何判断快速点击上,当用户在屏幕上单击某一个元素时候,例如跳转链接,此处浏览器会先捕获该次单击,但浏览器不能决定用户是单纯要点击链接还是要双击该部分区域进行缩放操作,所以,捕获第一次单击后,浏览器会先Hold一段时间t,如果在t时间区间里用户未进行下一次点击,则浏览器会做单击跳转链接的处理,如果t时间里用户进行了第二次单击操作,则浏览器会禁止跳转,转而进行对该部分区域页面的缩放操作。那么这个时间区间t有多少呢?在IOS safari下,大概为300毫秒。这就是延迟的由来。造成的后果用户纯粹单击页面,页面需要过一段时间才响应,给用户慢体验感觉,对于web开发者来说是,页面js捕获click事件的回调函数处理,需要300ms后才生效,也就间接导致影响其他业务逻辑的处理。 解决方案: fastclick可以解决在手机上点击事件的300ms延迟 zepto的touch模块,tap事件也是为了解决在click的延迟问题 可参考《无法自动播放的audio元素》 摇一摇功能 HTML5 deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。 常使用的扩展模块: 浏览器检测:https://github.com/madrobby/z... tap事件:https://github.com/madrobby/z... iscroll.js 解决页面不支持弹性滚动,不支持fixed引起的问题~ 实现下拉刷新,滑屏,缩放等功能~ 最新版本已经更新到5.0 官网:http://cubiq.org/iscroll-5 underscore.js 笔者没用过,不过听说好用,推荐给大家~ 该库提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象。 最新版本已经更新到1.8.2 官网:http://underscorejs.org/ 滑屏框架 适合上下滑屏、左右滑屏等滑屏切换页面的效果 slip.js iSlider.js fullpage.js flex布局 Sea.js 解决滑动卡顿的样式: -webkit-overflow-scrolling: touch; 在 SegmentFault,学习技能、解决问题 每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。 免费注册 立即登录 产品 热门问答 热门专栏 热门讲堂 最新活动 技术圈 找工作 移动客户端 资源 每周精选 用户排行榜 徽章 帮助中心 声望与权限 社区服务中心 开发手册 商务 人才服务 企业培训 活动策划 广告投放 合作联系 关于 关于我们 加入我们 联系我们 关注 产品技术日志 社区运营日志 市场运营日志 团队日志 社区访谈 微信 新浪微博 Github Twitter 条款 服务条款 内容许可 扫一扫下载 App Copyright © 2011-2018 SegmentFault. 当前呈现版本 17.06.16 浙ICP备 15005796号-2 浙公网安备 33010602002000号 杭州堆栈科技有限公司版权所有 CDN 存储服务由 又拍云 赞助提供 回顶部