為用戶創造價值的開發公司

    始終追求工匠精神,是您靠譜的H5開發、小程序開發、微信開發供應商

    藍暢首頁 >> 動態

    H5開發:H5怎么做適配

    時間:2019-10-18 01:37:01 | 來源:

    Infocode上海藍暢信息技術專業為您提供: H5開發、H5設計、H5策劃、H5游戲開發、H5外包等服務,點此在線咨詢


    H5開發怎么做適配


    以往拿到一份視覺稿要做頁面適配,通常都是針對不同分辨率尺寸做斷點寫 media query,然后看效果再微調。開發過程中視覺稿要是做了修改,修改的地方就得再走一遍分辨率測試和微調,這時想屎的心都有了。而且這些適配都是建立在已知的分辨率尺寸庫上,如果市面新出來一款分辨率尺寸機型,呵呵,又要奔跑在測試微調路上。是不是能有用一套代碼就適應各種分辨率窗口,那么就不會再有上面 這些煩惱,且開發效率快和維護成本會降低很多。

    答案是有的,而且這種形式最早出現于 flash 全屏整站,前陣子拜讀了舉總介紹的一篇文章關于圖片適配屬性 Object-fit ,發現這個屬性 Object-fit  雖然只能應用在圖片上,但是它的適配思路完全可以借鑒運用在 H5 頁面適配上,這種思路即是「縮放」,也是本篇文章的核心內容。就是無論窗口寬高比怎樣,頁面能自動縮放到窗口大小,而且元素的坐標及大小還可以使用精確和便于js計算的px為單位。

    這里借用 Object-fit 的方法命名方便記憶,下面簡單介紹 H5 頁面適配幾種展現形式。

    1、contain 模式:以內容中心為基點按照視覺稿的寬高比縮放以適配窗口顯示全頁面內容,窗口與內容的寬度比或高度比之間較小者縮放填滿窗口,當窗口寬高比和視覺稿不同時,另一方向的兩側出現留空部分。

    01

    2、cover 模式:以內容中心為基點按照窗口的寬高比等比縮放以適配窗口,窗口與內容的寬度比或高度比之間較大者縮放填滿窗口,當窗口寬高比和視覺稿不同時,另一方向的兩側超出窗口被裁剪,這種模式不會出現「contain 模式」的留空部分情況。

    02

    3、fill 模式:以內容中心為基點頁面拉伸填充滿整個窗口以適配窗口,當窗口寬高比和視覺稿不同時,內容一定程度上被拉伸。

    03

    4、scale-width 模式:頁面橫向縮放填充滿窗口,縱向按視覺稿的寬高比放大。出來的效果有兩種可能性,「contain 模式」或者「cover 模式」的效果。

    04

    5、scale-height 模式:頁面縱向縮放填充滿窗口,橫向按視覺稿的寬高比放大。出來的效果有兩種可能性,「contain 模式」或者「cover 模式」的效果。

    05

    下面分別來介紹我在項目中的對于適配的思考和選擇以及實現方法。

    在做適配之前,首先要和設計師定義好頁面的寬高比,即設計稿的分辨率大小,因為活動主要是通過微信進行傳播推廣,所以這里我使用的是iphone5/5s機型微信瀏覽器窗口分辨率640*1008。選擇這個分辨率主要出于以下 2 點綜合考慮:

    1. 客戶端分辨率占比數。根據友盟和騰訊云運營活動近幾個月的數據統計,iphone5/5s 640*1136 這個分辨率是 Ios 平臺占比最多的,同時過高的分辨率對低端機型是一種浪費,需要花額外多的流量來下載這些資源;

    2. 同寬高比尺寸的平臺占比數。同樣尺寸比的 Android 平臺分辨率 720*1280 和 1080*1920 占比數也是最多的。

    拿最近做的項目舉例,該 H5 頁面基本可歸類為以下 4 種內容類型:

    1、填充滿窗口的層,比如背景幕布(圖1)。

    06

    圖1

    這種層實現最簡單,采用「fill 模式」適配形式。實現效果核心代碼如下:

    圖1 中的圖片適配處理,采用「cover 模式」適配形式。實現效果核心代碼如下:

    2、同時基于水平方向和垂直方向居中的層,比如頁面正文內容部分(圖2)。

    09

    圖2

    像這種層背景色是純色或透明,「contain 模式」是最佳選擇可在任何分辨率窗口顯示全頁面內容,出現留空部分的顏色可以通過添加一個寬高 100% 的層設置背景屬性來修補。實現效果代碼如下:

    10

    11

    3、填充滿整個窗口且邊緣不是純色的層,比如(圖3)。

    12

    圖3

    「cover 模式」和「fill 模式」可以作為選擇。從易用性看,「fill 模式」可以精確適應窗口區域,但從視覺體驗上看,寬高不等比例的拉伸會造成圖片失真,同時該層的主要內容及交互操作集中在中部,不重要的邊緣可以適當被裁 剪,故這里選擇「cover 模式」來做適配會更好,實現效果代碼同上面示例基本一樣,區別在于縮放比處,代碼如下:

    13

    14

    4、大于屏幕的層,可實現跟隨手勢移動場景畫面,比如(圖4)。

    15

    圖4

    「scale-width 模式」和「scale-height 模式」適合運用在這類場景,(圖4)是橫向左右移動層,故這里選用「scale-height 模式」適配形式。實現效果代碼如下:

    16

    17

    18

    這里寬高等比縮放使用方法除了 transform:scale(x,y),也可以使用 zoom 進行縮放,視實際場景需求選擇合適的方法,兩者主要不同是:

    1. zoom 的基點不能自定義,固定是左上角 (0,0);

    2. transform:scale(x,y) 縮放轉換后仍占據原始空間大小,zoom 縮放轉換后占據空間等于縮放后的大小。

    還有一些復雜的層,但無外乎都可以拆分成以上幾種類型層,將內容分層出來,每個層根據內容形式選用相應的適配模式進行縮放。

    總結

    1、高效適配的核心思想是「縮放」。

    2、每一種適配模式都不是絕對的,需要根據需求場景選用合適的形式。適配前先跟設計師溝通明確適配表現形式,遇到復雜的場景可以把內容拆分出來區分適配。當頁面內容不適合方向旋轉展示,此時就不要無腦適配,有兩個方式可以選擇:

    1. 找設計師出一版另一方向的響應式設計稿然后制作成響應式頁面;

    2. 出現提示方式讓用戶旋轉回支持的方向,比如(圖5)。

    19

    圖5

    3、需要設定窗口等于設備物理寬度,即 viewport 為 width=device-width, initial-scale=1。

    4、適配相關的 js 放在 head 里,文檔結構加載完成就先執行適配 js,給 body 加一個顯隱動畫規避在 js 未執行完成時頁面出現縮放前后,顯隱動畫相關代碼如下:

    20

    最后,以上是我自己在這項目 H5 適配的方法和應用,也許有更好的適配方案,請各位不吝賜教,多多指點。


    作者:風聆

    來源:

    https://isux.tencent.com/how-to-make-webpage-fit-screen.html


    關于我們:

    Infocode藍暢信息技術有限公司成功為多家世界財富500強企業以及其他著名品牌提供優質服務,是您靠譜的互聯網開發供應商。

    服務客戶遍及北京、上海、杭州、深圳、廣州、天津、青島、南京、寧波、蘇州、無錫、廈門、重慶、西安等大中型城市及地區    為您提供H5開發小程序開發,H5外包,微信開發外包,H5商城開發,小程序商城開發,網站開發外包,H5游戲開發,小程序開發外包,小程序設計、APP開發外包,UI設計,SEO優化,SEO外包,視頻后期制作等優質服務



    本文地址:
    更多內容推薦:
    專欄最新閱讀:
    更多文章閱讀請至:技術專欄
    Tips: 為您提供 微信開發H5開發微信小程序開發微信定制開發網站開發小程序商城開發SEO網站優化視頻后期制作等定制化開發服務
    欧美XXXX黑人又粗又长精品| 无码精品久久久天天影视| 亚洲精品二区国产综合野狼| 午夜天堂精品久久久久| 国产AV午夜精品一区二区三区 | 国产精品视频网站你懂得| 国产精品一区三区| 国产极品喷水视频jk制服| 国产精品福利网站导航| 免费人妻精品一区二区三区| 日韩精品一区二区亚洲AV观看| 2022国产精品最新在线| 亚洲区日韩精品中文字幕| 99re66热这里只有精品| 久久久亚洲精品蜜桃臀| 国产精品视频一区二区三区四 | 日韩人妻无码精品久久免费一| 日韩精品免费视频| 最新国产成人精品2024| 精品成人免费自拍视频| 夜夜高潮夜夜爽国产伦精品| 国产99re在线观看只有精品| 四库影院永久四虎精品国产 | 日本精品一区二区久久久| 久久夜色精品国产网站| 黑人巨大精品欧美一区二区| 蜜国产精品jk白丝AV网站| 国产精品超碰12396| 免费精品无码AV片在线观看| 国产亚洲精品线观看动态图| 午夜DY888国产精品影院| 国产成人精品久久亚洲| 午夜DY888国产精品影院| 国产精品无码专区在线观看| 精品国际久久久久999波多野 | 国产精品无码一区二区三区电影| 国产亚洲色婷婷久久99精品91| 精品不卡一区二区| 亚洲精品国产自在久久| 日本精品不卡视频| 无码人妻精品一区二区三区久久久 |