單擊穿透問題:?jiǎn)螕裘蓪樱╩ask)上的“關(guān)閉”按鈕,蒙層消失后,發(fā)現(xiàn)觸發(fā)了按鈕下面元素的 click事件。
頁(yè)面單擊穿透問題:如果按鈕下面恰妤是一個(gè)有href屬性的a標(biāo)簽,那么頁(yè)面就會(huì)發(fā)生跳轉(zhuǎn)。
跨頁(yè)面單擊穿透問題:這次沒有蒙層了,直接單擊頁(yè)內(nèi)按鈕跳轉(zhuǎn)至新頁(yè),然后發(fā)現(xiàn)新頁(yè)面中對(duì)應(yīng)位置元素的 click事件被觸發(fā)了。
element { -webkit-touch-callout:none; }
6、如何解決 iPhone及iPad下輸入框的默認(rèn)內(nèi)陰影問題?
通過以下代碼設(shè)置樣式。
element { -webkit-appearance:none; }
7、在iOS和 Android下,如何實(shí)現(xiàn)觸摸元素時(shí)出現(xiàn)半透明灰色遮罩?
通過以下代碼設(shè)置樣式。
element { -webkit-tap-highiight-color:rgba (255, 255, 255, 0) }
8、在旋轉(zhuǎn)屏幕時(shí),如何解決字體大小自動(dòng)調(diào)整的問題?
通過以下代碼設(shè)置樣式。
html, body, form, fieldset, p, div, hl, h2, h3, h4, h5, h6 { -webkit-text-size-adjust:100%; }
9、如何解決 Android手機(jī)圓角失效問題?
通過 background-clip:padding-box為失效的元素設(shè)置樣式。
10、如何解決0S中 input鍵盤事件 keyup失效問題?
通過以下代碼解決。
<input type='text' id='testInput"> <script type="text/javascript"> document. getElementById('testInput') .addEventListener('input', function(e){var value =e .target .value;}); </script>
11、如何解決iOS設(shè)置中 input按鈕樣式會(huì)被默認(rèn)樣式覆蓋的問題?
設(shè)置默認(rèn)樣式為none。解決方式如下。
input, textarea { border:0;-webkit-appearance:none; }
12、如何解決通過 transform進(jìn)行skew變形、 rotate旋轉(zhuǎn)會(huì)出現(xiàn)鋸齒現(xiàn)象的問題?
通過以下代碼設(shè)置樣式。
-webkit-transform:rotate(-4deg) skew(10deg) translateZ(0); transform:rotate(-4deg) skew(10deg) translateZ(0); outline:lpx solid rgba(255, 255, 255, 0);
13、如何解決移動(dòng)端 click事件有300ms延遲的問題?
300ms延遲導(dǎo)致用戶體驗(yàn)不好。為了解決這個(gè)問題,一般在移動(dòng)端用 touchstart、 touchend、 touchmove、tap(模擬的事件)事件來取代 click事件。
14、在iOS中,以中文輸入法輸入英文時(shí),如何解決字母之間可能會(huì)出現(xiàn)六分之一空格的問題?
可以用正則表達(dá)式去掉空格。
this .value =this .value .replace ( / \u2006/g,' ')
15、如何解決移動(dòng)端HTML5音頻標(biāo)簽audio的 autoplay屬性失效問題?
因?yàn)樽詣?dòng)播放網(wǎng)頁(yè)中的音頻或視頻會(huì)給用戶帶來一些困擾或者不必要的流量消耗,所以蘋果系統(tǒng)和 Android系統(tǒng)通常都會(huì)禁止自動(dòng)播放和使用 JavaScript的觸發(fā)播放,必須由用戶來觸發(fā)才可以播放。
解決這個(gè)問題的代碼如下。
document addEventListener (' touchstart', function( ) { //播放音頻 document .getElementsByTagName ('audio ) [0]. play ( ); //暫停音頻 document getElementsByTagName ('audio) [0]. pause ( );});
16、如何解決移動(dòng)端HTML5中date類型的input標(biāo)簽不支持 placeholder屬性的問題?
代碼如下。
< input placeholder = "請(qǐng)輸入日期 " type="text" onfocus="(this .type='date')" name="date">
17、如何通過HTML5調(diào)用 Android或iOS的撥號(hào)功能?
HTML5提供了自動(dòng)調(diào)用撥號(hào)的標(biāo)簽,只要在a標(biāo)簽的href中添加tel:協(xié)議就可以了。
撥打固定電話的代碼如下。
< a href="te1:0791-86399283">單擊撥打0791-86399283</a>
撥打手機(jī)號(hào)碼的代碼如下。
< a href="te1:12345678901">單擊撥打12345678901</a>
18、如何解決上下拖動(dòng)滾動(dòng)條時(shí)的卡頓問題?
通過以下代碼設(shè)置樣式。
body { -webkit-overflow-scrolling:touch; overflow-scrolling:touch;
Android3+和iOS5+支持CSS3的新屬性 overflow- scrolling,該屬性也可以解決上述問題。
19、如何禁止復(fù)制或選中文本?
通過以下代碼設(shè)置樣式。
Element {-webkit-user-select:none; -moz-user-select:none ; -khtml-user-select:none ; user-select:none;
20、如何解決 Android手機(jī)的默認(rèn)瀏覽器不支持 websocket的問題?
解決辦法就是把通信層的websocket改成websocket+http雙協(xié)議,對(duì)外封裝成Net。業(yè)務(wù)層對(duì) websocket的調(diào)用都改成對(duì)Net的調(diào)用。
Net默認(rèn)連接websocket,如果不攴持,就自動(dòng)切換到http長(zhǎng)輪詢。
http的長(zhǎng)輪詢?cè)谑褂玫臅r(shí)候會(huì)有卡頓現(xiàn)象。
21、說說你所知道的移動(dòng)端響應(yīng)式適配的方法。
對(duì)于簡(jiǎn)單一點(diǎn)的頁(yè)面,一般高度直接設(shè)置成固定值,寬度一般撐滿整個(gè)屏幕。
對(duì)于稍復(fù)雜一些的頁(yè)面,利用百分比設(shè)置元素的大小來進(jìn)行適配,或者利用flex等CSS屬性設(shè)置一些需要定制的寬度。
對(duì)于再?gòu)?fù)雜一些的響應(yīng)式頁(yè)面,需要利用CSS3的媒體查詢屬性來進(jìn)行適配,大致思路是根據(jù)屏幕的大小,設(shè)置相應(yīng)的CSS。