A. 前端常見移動端兼容問題
因為手機解析度太小,如果按照解析度來顯示網頁,字會非常小,安卓手機 devicePixoRadio 比較亂,有 1.5 的,有 2 的也有 3 的。想讓圖片在手機里顯示更為清晰,必須使用 2x 的背景圖來代替 img 標簽(一般情況下都是 2 倍的),或者指定 background-size:contain; 都可以
用 -webkit-min-device-pixel-ratio 可以做到不同倍余銷頃數不同尺寸的圖片:
Android3+和 iOSi5+支持 CSS3 的新屬性為 overflow-scrolling
設置 alpha 值為 0 就可以去除本透明灰色遮罩,備註:transparent 的屬性值在 android 下無效。
方法一:body 添加 ontouchstart
方法二:js 給 document 綁定 touchstart 或 touchend 事件
在移動端中,如果給元素設置一個像素的邊框的話,那麼在手機上看起來是會比一個像素粗的。
解決方法:使用偽類元素模擬邊框,使用 transform 縮放
某些低端手機不支持 css3mask,可以選擇斗氏性的進降級處理
比如可以使用 js 判斷來引用不同 class:
pc 端字體正常顯示,但 ios 真機就出現,h1、span 等標簽字體比較大。
某些 Android 手機圓角失效 background-clip:padding-box ;
在移動端中,click 事件是生效的,但是,點擊之後會有 300ms 的延遲響應
原因:safari 是最早做出這個機制的,因為在移動端里,瀏覽器需要等待一段時間來判斷此次用戶操作是單擊還是雙擊,所以就有 click300ms 的延遲機制,Android 也很快就有了
不用 click,用自定義事件 tap
tap 是需要自定義的:如果用戶執行了 touchstart 在很短的時間又觸發了 touchend ,且兩次的距離很小,而且不能
引入 fastclick 庫來解決
在移動端中,圖片的處理應該是很謹慎的,假設有一張圖片本身的尺寸是 X 寬,設置和包裹它的 div 一樣寬,如果是 div 寬度小於圖片寬度沒有問題,但是如果 div 寬度大於圖片的寬度,圖片被拉伸失真
解決方法:讓圖片最大隻能是自己的寬度
例如:
div 是絕對定位的蒙層,並且 z-index 高於 a。而 a 標簽是頁面中的一個鏈接,我們給 div 綁定 tap 事件:
我們點擊蒙層時 div 正常消失,但是當我們在 a 標簽上點擊蒙層時,發現 a 鏈接被觸發,這就是所謂的點透事件。
原因:
touchstart 早於 touchend 早於豎陸 click。即 click 的觸發是由延遲的,這個時間大概在 300ms 左右,也就是說我們 tap 觸發之後蒙層隱藏。此時 click 還沒有觸發,300ms 之後由於蒙層隱藏,我們的 click 觸發到了下面的 a 鏈接。
解決:
1.盡量都使用 touch 事件來替換 click 事件。例如用 touchend 事件(推薦)
2.用 fastclick
3.用 preventDefault 阻止 a 標簽的 click
B. 關於前端js問題: 往下滑動隱藏,往上滑動顯示,pc正常,移動端顯示有問題。
你這個問題是移動端拖動頁面的時候有scroll回彈的現象,就是拖動的時候會有點彈性。也可以做delay來處理,不過感覺會卡卡的。
最好是加上到頂判斷。因為這個到頂的值會小於0
<script>
if(scrolls<=0){//處理回彈
return
}else{
//要從這里開始做正事
if(scrolls>=windowTop){
//balabal
}else{
//balabal
}
}
</script>