(1). input placeholder問(wèn)題
在手機(jī)上,placeholder內(nèi)容明顯靠上
解決辦法: 不要設(shè)計(jì)input 的line-height或line-height設(shè)為normal.
(2). line-height 在手機(jī)上會(huì)偏移。
解決辦法:line-height: 高度 + 1;
(3). 使用rem:
兼容ie9 + ;
瀏覽器默認(rèn)高度16px; 1em = 16px;
rem只相對(duì)于根元素的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"/>
兼容性問(wèn)題: Safari除了雙擊縮放還有雙擊滾動(dòng)操作
(5). 點(diǎn)擊穿透
假如頁(yè)面上有兩個(gè)元素A和B。B元素在A元素之上。我們?cè)贐元素的touchstart事件上注冊(cè)了一個(gè)回調(diào)函數(shù),該回調(diào)函數(shù)的作用是隱藏B元素。我們發(fā)現(xiàn),當(dāng)我們點(diǎn)擊B元素,B元素被隱藏了,隨后,A元素觸發(fā)了click事件。
移動(dòng)端的事件執(zhí)行順序是touchstart > touchend > click.
不要混用touch和click;
取消掉touch之后的click;
解決方法:1).只用touch 把頁(yè)面內(nèi)所有click全部換成touch事件( touchstart 、’touchend’、’tap’),注意:a標(biāo)簽的href也是click,需要換成js的跳轉(zhuǎn)。2).延遲350ms隱藏B。
(6). 出現(xiàn)虛擬鍵盤(pán)導(dǎo)致fixed元素錯(cuò)位
解決辦法: 由于虛擬鍵盤(pán)出現(xiàn)并未拋出事件,而檢測(cè)scroll或者resize事件,皆會(huì)有一定延遲,會(huì)出現(xiàn)閃爍現(xiàn)象。則當(dāng)前獲取焦點(diǎn)元素為文本元素,就將fixed元素設(shè)置為static。
(7). 移動(dòng)端手勢(shì)
手指放在屏幕上:ontouchstart 手指在屏幕上滑動(dòng):ontouchmove 手指離開(kāi)屏幕:ontouchend;
1.在touchstart事件觸發(fā)時(shí), 記錄手指按下的時(shí)間startTime,本次滑動(dòng)的初始位置initialPos。 2.在touchmove事件觸發(fā)時(shí), 記錄當(dāng)前位置nowPosition(實(shí)時(shí)移動(dòng)元素),滑動(dòng)距離movePosition(當(dāng)前位置nowPosition與初始位置initialPos的差值),判斷正負(fù)數(shù)再?zèng)Q定是左還是右移動(dòng)。 3.在touchend事件觸發(fā)時(shí), 記錄手指離開(kāi)屏幕的時(shí)間endTime,獲得手指在屏幕上停留的時(shí)間(endTime-startTime),滑動(dòng)距離movePosition 判斷是否滑動(dòng): 如果停留時(shí)間少于300ms,則認(rèn)為是快速滑動(dòng),無(wú)論滑動(dòng)距離是多少,都到下一頁(yè) 滑動(dòng)距離與‘容器’ 大小進(jìn)行比較,若超過(guò)‘容器’大小的1/3,則到下一頁(yè)
(8). iphone動(dòng)態(tài)生成的html元素click失效
解決方法: 為綁定click的元素增加css樣式 cursor:pointer;