1、移动端定位最好不要用fixed,用绝对定位absolute。
2、移动端会有点透BUG,需要touchstart的时候event.preventDefault();
3、移动端meta功能要用好,禁止缩放,缩放比例,屏蔽电话号码等功能很实用。 (但是在ios10以上版本是无效的,需要禁止默认事件参考2)
4、-webkit-tap-highlight-color可以取消点击高亮。
5、有动画效果都要启动gpu加速,translate3d(0,0,0),动画位移最好都用translateX(Y、Z),效果会比top,left,right,好很多。(安卓低版本会卡死)
6、fixed布局,会有兼容性问题,除非你只兼容移动端高版本(本人在ios9,ios8,操作系统下踩过坑,样式会乱)
7、click事件会有300ms延迟,尽量用其他插件代替或用touchstart、touchend代替。
8、移动的单位最好用rem,用js来计算1rem=20px(这个等于多少看自己)计算方法
var html=document.documentElement;
var htmlw=html.clientWidth;
console.log((htmlw/7.5));//1rem=100px(我是按照我们公司自己的设计图换算的,我们公司移动端图是750px的)
9、一些情况下对非可点击元素监听click事件,ios下不会触发,css增加cursor:pointer就搞定了。
10、iOS(safari)有时候某个标签绑定点击事件无效,加了空的onclick=""就好了,如:<a onclick=""></a>
11、<meta name="format-detection" content="telephone=no" />ios数字标签不会被默认成电话号码
12、js方式添加translate属性 el.style.WebkitTransform=el.style.transform="translateX(100px)";
13、浏览器滑动效果
-webkit-overflow-scrolling:touch;/滑动效果平滑/
14、ios下的input框无法自动获取焦点及无法自动切换焦点
需要换一种方式进行实现
15、ios返回上一页刷新页面问题
可以用1 需要在当前页添加onpageshow方法,在他的下一页添加sessionStorage, 在当前页对sessionStorage的属性进行判断,然后在进行 location.reload(),
2 利用popstate方法对下一页进行url监听,需要pushstate()往历史栈里添加一个空的对象,才可以用popstate监听到 写法:
window.addEventListener("popstate",function(){ alert(1); location.href=document.referrer; },false); var state = { title:'' }; var title=''; var url=''; window.history.pushState(state,title,url);
16、移动端是点击事件有一个300ms的延时,需要引入FastClick.js,写法:
document.addEventListener('DOMContentLoaded', function() {
FastClick.attach(document.body);
}, false);
jq写法:
$(function() {
FastClick.attach(document.body);
});
17、移动端适配rem换算,可以引入淘宝的flexible.js以设计图为750px为基准,用法:
<script src="flexible.js"></script>