移动web相关(一)
2016-12-13 本文已影响0人
Supor
<!--禁止自动对符合电话格式的文本的格式化显示-->
<meta name="format-detection" content="telephone=no">
<!--禁止自动对符合地址格式的文本的格式化显示-->
<meta name="format-detection" content="address=no">
<!--视窗宽度指定为设备支持宽度,禁止缩放-->
<meta name="viewport" content="width="device-width",initial-scale=1,user-scalable="no">
性能优化 --- 更快
压缩代码、文件合并、后台直出等方法切实改变响应速度
交互优化 --- 更好用
通过替换方案改变用户感知到的响应速度 结合移动设备特点提供更有针对性更好的体验
tap事件:不是原生事件而是由touchstart\touchmove\touchend结合的混合事件,目的是解决click事件300ms延迟。
点击态:给用户明确的点击反馈,提升用户体验
- 方案一:使用伪类:active
缺点:滚动的时候也会触发样式 - 方案二:
//点击事件带点击态
$el.on('tap',function(e){
var $target = $(e.target);
$target.addClass('active');
setTimeout(function(){
$target.removeClass('active');
},150);
});
滚动
全局滚动:滚动条在body节点或更顶层
局部滚动:滚动条在body下的某一个DOM节点上
- part1:实现弹性滚动效果(iOS和Android的chrome支持)
/*建议:将属性挂在body上可以避免很多奇怪的bug*/
body{-webkit-overflow-scrolling:touch;}
/*局部滚动的DOM节点*/
.scroll-el{overflow:auto;}
- part2:滚动出界情况(iOS)
全局滚动:滚动到页面顶部(或底部)时继续向下(向上)滑动,就会出现
局部滚动:滚动到页面顶部(或底部)时,再继续向下(向上)滑动时,就会出现;滑动底部固定区域【解决方法:SrollFix插件,其原理是滚动时判断是否是从顶部(底部)开始滑动,若是则增加(减去)一个像素;页面的固定区域禁止touchmove默认事件】 - Android建议只使用全局滚动,因为局部滚动会出现蛋疼的滚动条bug
流畅滚动的总结
1.body上加上 -webkit-overflow-scrolling:touch
2.iOS尽量使用局部滚动
3.iOS引进ScrollFix避免出界
4.Android下尽量使用全局滚动
--1)尽量不用overflow:auto
--2)使用min-height:100%代替height:100%
5.iOS下带有滚动条且position:absolute的节点不要设置背景色
定制软键盘样式
- 配置input节点的type属性
输入纯数字可以用type="tel"---->数字键盘
设置type="search"
用一个form表单包围起来
在onsubmit事件里阻止默认行为---->带有搜索键的输入键盘 - pattern属性
现阶段只支持pattern="[0-9]*"---->纯数字键盘
定制键盘行为(iOS基本支持Android不同情况)
针对的问题:输入英文用户名首字母自动大写的问题
解决:autocapitalize="off"//关闭首字母大写
自动纠错:autocorrect="on"/autocorrect="off"