當前位置:首頁 » 網頁前端 » 前端圖片在移動端看不見
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端圖片在移動端看不見

發布時間: 2023-06-03 10:27:25

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>