手機端頁面在專案中遇到的一些問題及解決辦法

發表於2018-06-07

1.解決頁面使用overflow: scroll在iOS上滑動卡頓的問題?

首先你可能會給頁面的html和body增加了height: 100%, 然後就可能造成IOS上頁面滑動的卡頓問題。解決方案是:
(1) 看是否能把body和html的height: 100%去除掉。
(2) 在滾動的容器中增加:-webkit-overflow-scrolling: touch或者給body增加:body {overflow-x: hidden}。

2.ios頁面橡皮彈回效果遮擋頁面選項卡?

(1) 有時body和html的height: 100%去除掉問題可能就沒有了。
(2) 到達臨界值的時候在阻止事件預設行為

有時也會碰見彈窗出來後兩個層的橡皮筋效果出現問題,我們可以在彈出彈出時給底層頁面加上一個類名,類名禁止頁面滑動這樣下層的橡皮筋效果就會被禁止,就不會影響彈窗層。

3.IOS機型margin屬性無效問題?

(1) 設定html body的高度為百分比時,margin-bottom在safari裡失效
(2) 直接padding代替margin

4.Ios繫結點選事件不執行?

(1)新增樣式cursor :pointer。點選後消除背景閃一下的css:-webkit-tap-highlight-color:transparent;

5.Ios鍵盤換行變為搜尋?

  • 首先,input 要放在 form裡面。
  • 這時 “換行” 已經變成 “前往”。
  • 如果想變成 “搜尋”,input 設定 type=”search”。

6.Jq對a標籤點選事件不生效?

出現這種情況的原因不明,有的朋友解釋:我們平時都是點選的A標籤中的文字了。 所以要想用JS模擬點選A標籤事件,就得先往A標籤中的文字新增能被JS捕獲的元素,然後再用JS模擬點選該元素即可。但是我覺得不合理,雖然找不到原因但是解決辦法還是有的。
(1)document.getElementById(“abc “).click();
(2)$(“#abc “)[0].click();

7.有時因為伺服器或者別的原因導致頁面上的圖片沒有找到?

這是我們想需要用一個本地的圖片代替沒有找的的圖片

8.transform屬性影響position:fixed?

(1)規範中有規定:如果元素的transform值不為none,則該元素會生成包含塊和層疊上下文。CSS Transforms Module Level 1不只在手機上,電腦上也一樣。除了fixed元素會受影響之外,z-index(層疊上下文)值也會受影響。絕對定位元素等和包含塊有關的屬性都會受到影響。當然如果transform元素的display值為inline時又會有所不同。最簡單的解決方法就是transform元素內部不能有absolute、fixed元素.

9.ios對position: fixed不太友好,有時我們需要加點處理?

在安卓上面,點選頁面底部的輸入框,軟鍵盤彈出,頁面移動上移。
而ios上面,點選頁面底部輸入框,軟鍵盤彈出,輸入框看不到了。。。查資料說什麼的都有,iscroll,jquery-moblie,absolute,fixe,static都非常複雜,要改很多。。。
讓他彈出時讓滾動條在最低部

10.jq validate外掛驗證問題?

(1)所以的input必須有name不然會出錯

11.有時手機會出現斷網的情況,我沒可能會對斷網的情況做一些處理?

(1)navigator.onLine可判斷是否是離線狀態.

12.判斷物件的長度?

(1)用Object.keys,Object.keys方法返回的是一個陣列,陣列裡面裝的是物件的屬性。

(2)Object.getOwnPropertyNames(obj).length

13.上一題我們用到了Object.keys與Object.getOwnPropertyNames他們的區別?

Object.keys定義:返回一個物件可列舉屬性的字串陣列;
Object.getOwnPropertyNames定義:返回一個物件可列舉、不可列舉屬性的名稱;
屬性的可列舉性、不可列舉性:定義:可列舉屬性是指那些內部 “可列舉” 標誌設定為 true 的屬性,對於通過直接的賦值和屬性初始化的屬性,該標識值預設為即為 true,對於通過 Object.defineProperty 等定義的屬性,該標識值預設為 false。

196513361-5b16021f6db85_articlex
綜合例項:

14.移動開發不同手機彈出數字鍵盤問題?

(1)type=”tel”
iOS和Android的鍵盤表現都差不多
(2)type=”number”
優點是Android下實現的一個真正的數字鍵盤
缺點一:iOS下不是九宮格鍵盤,輸入不方便
缺點二:舊版Android(包括微信所用的X5核心)在輸入框後面會有超級雞肋的小尾巴,好在Android 4.4.4以後給去掉了。
不過對於缺點二,我們可以用webkit私有的偽元素給fix掉:

(3)pattern屬性
pattern用於驗證表單輸入的內容,通常HTML5的type屬性,比如email、tel、number、data類、url等,已經自帶了簡單的資料格式驗證功能了,加上pattern後,前端部分的驗證更加簡單高效了。
顯而易見,pattern的屬性值要用正規表示式。
例項 簡單的數字驗證
數字的驗證有兩個:
<input type=”number” pattern=”d”>
<input type=”number” pattern=”[0-9]*”>

15.input[number]型別輸入非數字字元

js獲取的值是空;比如-12,+123等

16.Javascript:history.go()和history.back()的用法與區別?

簡單的說就是:go(-1):返回上一頁,原頁面表單中的內容會丟失;back():返回上一頁,原頁表表單中的內容會保留。history.go(-1):後退+重新整理history.back():後退
之所以注意到這個區別,是因為不同的瀏覽器後退行為也是有區別的,而區別就跟javascript:history.go()和history.back()的區別類似。
Chrome和ff瀏覽器後退頁面,會重新整理後退的頁面,若有資料請求也會提交資料申請。類似於history.go(-1);
而safari(包括桌面版和ipad版)的後退按鈕則不會重新整理頁面,也不會提交資料申請。類似於javascript:history.back();

17.Meta基礎知識:

18.移動端如何定義字型font-family?
@ ————————————–中文字型的英文名稱
@ 宋體 SimSun
@ 黑體 SimHei
@ 微信雅黑 Microsoft Yahei
@ 微軟正黑體 Microsoft JhengHei
@ 新宋體 NSimSun
@ 新細明體 MingLiU
@ 細明體 MingLiU
@ 標楷體 DFKai-SB
@ 仿宋 FangSong
@ 楷體 KaiTi
@ 仿宋_GB2312 FangSong_GB2312
@ 楷體_GB2312 KaiTi_GB2312
@
@ 說明:中文字型多數使用宋體、雅黑,英文用Helvetica

body { font-family: Microsoft Yahei,SimSun,Helvetica; }

19.打電話發簡訊寫郵件怎麼實現?

20.移動端touch事件(區分webkit和winphone)?

// 以下支援webkit
touchstart——當手指觸碰螢幕時候發生。不管當前有多少隻手指
touchmove——當手指在螢幕上滑動時連續觸發。通常我們再滑屏頁面,會呼叫event的preventDefault()可以阻止預設情況的發生:阻止頁面滾動
touchend——當手指離開螢幕時觸發
touchcancel——系統停止跟蹤觸控時候會觸發。例如在觸控過程中突然頁面alert()一個提示框,此時會觸發該事件,這個事件比較少用

//TouchEvent說明:
touches:螢幕上所有手指的資訊
targetTouches:手指在目標區域的手指資訊
changedTouches:最近一次觸發該事件的手指資訊
touchend時,touches與targetTouches資訊會被刪除,changedTouches儲存的最後一次的資訊,最好用於計算手指資訊

//引數資訊(changedTouches[0])
clientX、clientY在顯示區的座標
target:當前元素

//事件響應順序
ontouchstart > ontouchmove > ontouchend > onclick

21.點選元素產生背景或邊框怎麼去掉

22.美化表單元素

//一、使用appearance改變webkit瀏覽器的預設外觀
input,select { -webkit-appearance:none; appearance: none; }

//二、winphone下,使用偽元素改變表單元素預設外觀
//1.禁用select預設箭頭,::-ms-expand修改表單控制元件下拉箭頭,設定隱藏並使用背景圖片來修飾
select::-ms-expand { display:none; }

//2.禁用radio和checkbox預設樣式,::-ms-check修改表單核取方塊或單選框預設圖示,設定隱藏並使用背景圖片來修飾
input[type=radio]::-ms-check,
input[type=checkbox]::-ms-check { display:none; }

//3.禁用pc端表單輸入框預設清除按鈕,::-ms-clear修改清除按鈕,設定隱藏並使用背景圖片來修飾
input[type=text]::-ms-clear,
input[type=tel]::-ms-clear,
input[type=number]::-ms-clear { display:none; }

23.移動端字型單位font-size選擇px還是rem?

// 如需適配多種移動裝置,建議使用rem。以下為參考值:
html { font-size: 62.5%; } //10*16 = 62.5%
//設定12px字型 這裡注意在rem前要加上對應的px值,解決不支援rem的瀏覽器的相容問題,做到優雅降級
body { font-size:12px; font-size:1.2rem; }

24.input標籤新增上disable屬性在ios端字型顏色不相容的問題?

input[disabled],input:disabled,input.disabled{

}

25.IOS 的游標大小問題

IE:不管該行有沒有文字,游標高度與font-size一致。
FF:該行有文字時,游標高度與font-size一致。該行無文字時,游標高度與input的height一致。
Chrome:該行無文字時,游標高度與line-height一致;該行有文字時,游標高度從input頂部到文字底部(這兩種情況都是在有設定line-height的時候),如果沒有line-height,則是與font-size一致。
IOS中情況和Chrome 相似。

設定字型大小和行高一致,然後通過 padding 撐開大小
只給IE瀏覽器設定 line-height
-ms-line-height:40px;

相關文章