(1). input placeholder問題
在手機(jī)上每强,placeholder內(nèi)容明顯靠上
解決辦法: 不要設(shè)計(jì)input 的line-height或line-height設(shè)為normal.
(2). line-height 在手機(jī)上會偏移。
解決辦法:line-height: 高度 + 1恰梢;
(3). 使用rem:
兼容ie9 + ;
瀏覽器默認(rèn)高度16px; 1em = 16px;
rem只相對于根元素的font-size, 即只需要設(shè)置根元素的font-size,一般設(shè)置html的font-size: 62.5%;
(4). 300ms延遲
方法: 禁用縮放
<meta name="viewport" content="user-scalable=no"/>
<meta name="viewport" content="initial-scale=1,maximum-scale=1"/>
方法二:更改默認(rèn)的視口寬度。
<meta name="viewport" content="width=device-width"/>
兼容性問題: Safari除了雙擊縮放還有雙擊滾動操作
(5). 點(diǎn)擊穿透
假如頁面上有兩個元素A和B想帅。B元素在A元素之上馍迄。我們在B元素的touchstart事件上注冊了一個回調(diào)函數(shù)主卫,該回調(diào)函數(shù)的作用是隱藏B元素。我們發(fā)現(xiàn)虾宇,當(dāng)我們點(diǎn)擊B元素搓彻,B元素被隱藏了,隨后嘱朽,A元素觸發(fā)了click事件旭贬。
移動端的事件執(zhí)行順序是touchstart > touchend > click.
不要混用touch和click;
取消掉touch之后的click;
解決方法:1).只用touch 把頁面內(nèi)所有click全部換成touch事件( touchstart 搪泳、’touchend’稀轨、’tap’),注意:a標(biāo)簽的href也是click岸军,需要換成js的跳轉(zhuǎn)奋刽。2).延遲350ms隱藏B。
(6). 出現(xiàn)虛擬鍵盤導(dǎo)致fixed元素錯位
解決辦法: 由于虛擬鍵盤出現(xiàn)并未拋出事件艰赞,而檢測scroll或者resize事件佣谐,皆會有一定延遲,會出現(xiàn)閃爍現(xiàn)象方妖。則當(dāng)前獲取焦點(diǎn)元素為文本元素狭魂,就將fixed元素設(shè)置為static。
(7). 移動端手勢
手指放在屏幕上:ontouchstart 手指在屏幕上滑動:ontouchmove 手指離開屏幕:ontouchend;
1.在touchstart事件觸發(fā)時雌澄, 記錄手指按下的時間startTime斋泄,本次滑動的初始位置initialPos。 2.在touchmove事件觸發(fā)時掷伙, 記錄當(dāng)前位置nowPosition(實(shí)時移動元素)是己,滑動距離movePosition(當(dāng)前位置nowPosition與初始位置initialPos的差值),判斷正負(fù)數(shù)再決定是左還是右移動任柜。 3.在touchend事件觸發(fā)時卒废, 記錄手指離開屏幕的時間endTime,獲得手指在屏幕上停留的時間(endTime-startTime)宙地,滑動距離movePosition 判斷是否滑動: 如果停留時間少于300ms摔认,則認(rèn)為是快速滑動,無論滑動距離是多少宅粥,都到下一頁 滑動距離與‘容器’ 大小進(jìn)行比較参袱,若超過‘容器’大小的1/3,則到下一頁
(8). iphone動態(tài)生成的html元素click失效
解決方法: 為綁定click的元素增加css樣式 cursor:pointer秽梅;