日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

關(guān)于移動(dòng)端的前端面試題(附答案)

時(shí)間:2021-03-23 15:22:56 類型:web前端
字號(hào):    
前端發(fā)展到今天,移動(dòng)端的流量已經(jīng)超越了PC端。比如對(duì)絕大部分人來說,每天使用手機(jī)上網(wǎng)的時(shí)間要遠(yuǎn)高于使用筆記本電腦、計(jì)算機(jī)的上網(wǎng)時(shí)間。因此移動(dòng)端變得越來越重要。每個(gè)人的手機(jī)屏幕大小不同、系統(tǒng)不同,因此移動(dòng)端屏幕的響應(yīng)式適配、移動(dòng)端兼容性、瀏覽器的操作Bug等是移動(dòng)端部分的面試題主要考察的內(nèi)容。

1、在移動(dòng)端,單擊穿透是什么?
單擊穿透現(xiàn)象有3種。

有4種解決方案。
(1)只用 touch。
這是最簡(jiǎn)單的解決方案,完美解決單擊穿透問題,把頁(yè)面內(nèi)所有 click都換成 touch事件( touchstart、 touched、tap)。
(2)只用 click
因?yàn)閱螕魰?huì)帶來300ms的延遲,所以頁(yè)面內(nèi)任何一個(gè)自定義交互都將增加300ms的延遲。
(3)輕觸〔tap)后延遲350ms再隱藏蒙層。
改動(dòng)最小,缺點(diǎn)是隱藏蒙層變慢了,350ms還是能感覺到慢的。
(4)添加 pointer-events:none樣式。
這比較麻煩且有缺陷,不建議使用。蒙層隱藏后,給按鈕下面的元素添上pointer-events:none樣式,讓 click穿過去,350ms后去掉這個(gè)樣式?;謴?fù)響應(yīng)的缺陷是蒙層消失后的350ms內(nèi),用戶單擊按鈕下面的元素沒反應(yīng),如果用戶單擊速度很快,一定會(huì)發(fā)現(xiàn)。
2、如何實(shí)現(xiàn)自適應(yīng)布局?
通過以下幾種方式實(shí)現(xiàn)。
(1)可以使用媒體查詢做響應(yīng)式頁(yè)面。
(2)用 Bootstrap的柵格系統(tǒng)。
(3)使用彈性盒模型。
3、在移動(dòng)端( Android、ioS)怎么做好用戶體驗(yàn)?
從以下幾方面做好用戶體驗(yàn)
(1)清晰的視覺縱線。
(2)信息的分組。
(3)極致的減法。
(4)利用選擇代替輸入。
(5)標(biāo)簽及文字的排布方式。
(6)依靠明文確認(rèn)密碼。
(7)合理地利用鍵盤。
4、如何解決 Android瀏覽器查看背景圖片模糊的問題?
這個(gè)問題是 devicePixelRatio的不同導(dǎo)致的,因?yàn)槭謾C(jī)分辨率太小,如果按照分辨率來顯示網(wǎng)頁(yè),字會(huì)非常小,所以蘋果系統(tǒng)當(dāng)初就把 iPhone4的960×640像素的分辨率在網(wǎng)頁(yè)里更改為480×320像素,這樣 devicePixelRatio=2。
而 Android的 device PixelRatio比較亂,值有1.5、2和3。
為了在手機(jī)里更為清晰地顯示圖片,必須使用2倍寬高的背景圖來代替img標(biāo)簽(一般情況下都使用2倍)。
例如一個(gè)div的寬高是100px×100px,背景圖必須是200px×200px,然后設(shè)置 background-size;contain樣式,顯示出來的圖片就比較清晰了。
5、如何解決長(zhǎng)時(shí)間按住頁(yè)面出現(xiàn)閃退的問題?
通過以下代碼設(shè)置樣式。

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。


<