1. 前端ios與android的兼容性問題怎麼解決
解決瀏覽器兼容是必備問題,比如360的極速和兼容模式顯示同一個網頁
2. 前端面試題,移動端兼容問題有哪些,安卓和ios問題
那麼進入正文,不廢話,直接把自己了解到的和一些看法說出來。
首先是屏幕問題,現在主流的移動設備以安卓和IOS為主,我們在製作移動端頁面也是以兼容這兩種設備去布局。
首先說iPhone,不得不說iPhone的屏幕考慮到了我們開發者的難處,從而給出iPhone屏幕的dpr都是整數值,在6plus出現之前,iphone的dpr始終是2(物理像素/邏輯像素=2),即使是6plus出現了,iphone到底其實也就只有2,3這兩個dpr。其實6plus的實際dpr並不是整數,而是2.87左右,不過,為了方便開發者來開發,iphone6plus對其做了一個調整,將dpr調整為3,然後在對屏幕進行了一個縮放。所以我們很容易對其做到兼顧。
而安卓的dpr值,並不像iphone那樣就只有兩個值。安卓的dpr是千奇百怪的,可能是1.5,2,3,4,2.5等等的都有。(甚至我還看到了1.7之類的,安卓的各個設備商,玩的真尼瑪high啊。怎麼高興怎麼來。)
那麼現在開始說說移動端怎麼布局以及字體該怎麼設置,因為有各種各樣的解決方式,我就不一一贅述,直接說手淘的解決方案:flexible.js
我為什麼又一次把這個拿出來說,主要有兩點原因:1.我覺得它好用,解決方式簡單粗暴。2.它經過了比較長時間的考驗,如今手淘還在用它。
具體的使用方法自己可以去flexible.js看看,這里我簡單說說它的方案以及個人對它的改良。
3. 前端怎麼跟ios/android配合工作
建議你選擇Web前端或android開發。 現在網路應用越來越廣,Web前端開發的需求不會有少。 android是現在非常流行的手機、平板系統,未來的手機將不像手機,而更像一台小電腦,android用Java開發,你學過Java Web,學android開發應該不難。
4. 請問前端高手,哪一種前端框架可以開發跨安卓、ios的平台的app呢
你說的那幾個框架,做成h5頁面,就可以在安卓或者ios的webview上面跑,都是兼容兩個平台的,
如果是要開發安卓,ios端的APP,那就去試試 react natice 或者 uni-app吧,後者號稱可以兼容七個端
5. 關於H5在安卓ios平台兼容性問題,及解決方案
capture 屬性:在webapp上使用 input 的 file 屬性,指定 capture 屬性可以調用系統默認相機、攝像胡握絕塵和錄音功能。
capture 表示,可以捕獲到系統默認設備的媒體信息,如下:
capture="camera" 相機
capture="camcorder" 攝像機
capture="microphone" 錄音褲宏慶
6. 前端常見移動端兼容問題
因為手機解析度太小,如果按照解析度來顯示網頁,字會非常小,安卓手機 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
7. 如何兼容android 和ios 系統
1、兩者運行機制不同:IOS採用的是沙盒運行機制,安卓採用的是虛擬機運行機制。
2、兩者後台制度不同:IOS中任何第三方程序都不能在後台運行;安卓中任何程序都能在後台運行,直到沒有內存才會關閉。
3、IOS中用於UI指令許可權最高,安卓中數據處理指令許可權最高。
iphone沙盒機制解釋:應用程序位於文件系統的嚴格限制部分,程序不能直接訪問其他應用程序。以殺毒軟體中的沙盒技術解釋一下。「沙盒」技術是發現可疑行為後讓程序繼續運行,當發現的確是病毒時才會終止。「沙盒」技術的實踐運用流程是:讓疑似病毒文件的可疑行為在虛擬的「沙盒」里充分表演,「沙盒」會記下它的每一個動作;當疑似病毒充分暴露了其病毒屬性後,「沙盒」就會執行「回滾」機制:將病毒的痕跡和動作抹去,恢復系統到正常狀態。
安卓虛擬機機制解釋:android本身不是為觸摸屏打造的,所以所有的應用都是運行在一個虛擬的環境中,由底層傳輸數據到虛擬機中,再由虛擬機傳遞給用戶UI,任何程序都就可以輕松訪問其他程序文件。
8. web前端(移動端)視屏播放插件,能在安卓和蘋果手機下進行播放
<video width="320" height="240" controls="controls"> <source src="movie.ogg" type="video/ogg"> <source src="movie.mp4" type="video/mp4">Your browser does not support the video tag.</video>
source可以放多種格式的視頻,不過放mp4格式的視頻幾乎可以兼容所有視頻。
需要注意的是,mp4格式最好用media encoder軟體轉換一下,輸出為iphone、ios、youtube格式的都可以。
9. H5頁面與原生App(安卓,IOS)交互
在客戶端項目中,同一個app會開發成兩個版本,一個是安卓版本,一個IOS版本,公司必須有兩個開發團隊(一個安卓團隊,一個IOS團隊)來進行開發,這樣一來,開發成本非常之高。所以,往往在實際項目-中,會嵌套很多H5頁面,一個H5頁面同時兼容安卓和IOS兩個系統 ,這樣一來,大大減少了開發成本,前端開發頁面就必須和原生進行交互。
1. 頁面開發 —— 前端開發人員將所有的頁面按照移動webappp進行開發,做好不同屏幕的適配(寬度100%,視口為移動端視口 (快捷方式meta:vp tap),字體適配rem單位,設置html根標簽的font-size然後根據媒體查詢判斷設備屏幕大小進而設置html根標簽的不同fontsize,去除移動端高亮顯示;小圖標要善於使用字體圖標(常用的字體圖標庫有阿里巴巴矢量圖),改變input標簽的默認樣式可以採用隱藏input,然後通過字體圖標來控制前面的圖標,就可以做成自己想要的圖標效果)
2.前端頁面部署 —— 設置好入口文件(原生一進來就進入的頁面,命名為index.html),部署到對應的伺服器上,通過網址就能夠訪問到頁面,將網址給app客戶端開發人員,他們將app配置好環境後講頁面嵌套在app中。
3.進行數據對接:兩種對接方式(1).前端頁面自己通過ajax去後台拉數據,然後自己在頁面上使用再提交給後台。前提是原生需要將對應的設備號,加密方式,請求數據所需要的各種參數通過回調函數傳遞給H5頁面,H5頁面拿到這些數據後直接調後台的借口、獲取到數據。(2).前端頁面不用自己去後台拉取數據,而是通過回調函數,獲取到原生app拉取的數據,前端頁面將這些數據處理後又通過回調函數交給app,再又app發送給後台。兩種調用的優劣比較:如果H5頁面及數據不是很多,使用第二種方式比較合理,不用H5頁面請求數據(不用封裝請求,不用加密數據),不使用框架,大大減少了頁面的大小,提高性能及用戶體驗。如果涉及到的前端頁面非常多,數據交互比較復雜的話,就必須使用第一種對接方式了,app只需要將設備號,加密規則,參數傳遞給H5,H5根據頁面需求自己向後台拉去和請求數據,直接交互,不再通過app進行轉接,減小復雜程度。