• <bdo id="i4g44"></bdo>
    <code id="i4g44"><tr id="i4g44"></tr></code>
    <strike id="i4g44"></strike>
    <bdo id="i4g44"></bdo>

    為用戶創(chuàng)造價(jià)值的開(kāi)發(fā)公司

    始終追求工匠精神,是您靠譜的H5開(kāi)發(fā)、小程序開(kāi)發(fā)、微信開(kāi)發(fā)供應(yīng)商

    藍(lán)暢首頁(yè) >> 動(dòng)態(tài)

    H5開(kāi)發(fā):H5怎么做適配

    時(shí)間:2019-10-18 01:37:01 | 來(lái)源:

    Infocode上海藍(lán)暢信息技術(shù)專業(yè)為您提供: H5開(kāi)發(fā)、H5設(shè)計(jì)、H5策劃、H5游戲開(kāi)發(fā)、H5外包等服務(wù),點(diǎn)此在線咨詢


    H5開(kāi)發(fā)怎么做適配


    以往拿到一份視覺(jué)稿要做頁(yè)面適配,通常都是針對(duì)不同分辨率尺寸做斷點(diǎn)寫 media query,然后看效果再微調(diào)。開(kāi)發(fā)過(guò)程中視覺(jué)稿要是做了修改,修改的地方就得再走一遍分辨率測(cè)試和微調(diào),這時(shí)想屎的心都有了。而且這些適配都是建立在已知的分辨率尺寸庫(kù)上,如果市面新出來(lái)一款分辨率尺寸機(jī)型,呵呵,又要奔跑在測(cè)試微調(diào)路上。是不是能有用一套代碼就適應(yīng)各種分辨率窗口,那么就不會(huì)再有上面 這些煩惱,且開(kāi)發(fā)效率快和維護(hù)成本會(huì)降低很多。

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

    這里借用 Object-fit 的方法命名方便記憶,下面簡(jiǎn)單介紹 H5 頁(yè)面適配幾種展現(xiàn)形式。

    1、contain 模式:以內(nèi)容中心為基點(diǎn)按照視覺(jué)稿的寬高比縮放以適配窗口顯示全頁(yè)面內(nèi)容,窗口與內(nèi)容的寬度比或高度比之間較小者縮放填滿窗口,當(dāng)窗口寬高比和視覺(jué)稿不同時(shí),另一方向的兩側(cè)出現(xiàn)留空部分。

    01

    2、cover 模式:以內(nèi)容中心為基點(diǎn)按照窗口的寬高比等比縮放以適配窗口,窗口與內(nèi)容的寬度比或高度比之間較大者縮放填滿窗口,當(dāng)窗口寬高比和視覺(jué)稿不同時(shí),另一方向的兩側(cè)超出窗口被裁剪,這種模式不會(huì)出現(xiàn)「contain 模式」的留空部分情況。

    02

    3、fill 模式:以內(nèi)容中心為基點(diǎn)頁(yè)面拉伸填充滿整個(gè)窗口以適配窗口,當(dāng)窗口寬高比和視覺(jué)稿不同時(shí),內(nèi)容一定程度上被拉伸。

    03

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

    04

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

    05

    下面分別來(lái)介紹我在項(xiàng)目中的對(duì)于適配的思考和選擇以及實(shí)現(xiàn)方法。

    在做適配之前,首先要和設(shè)計(jì)師定義好頁(yè)面的寬高比,即設(shè)計(jì)稿的分辨率大小,因?yàn)榛顒?dòng)主要是通過(guò)微信進(jìn)行傳播推廣,所以這里我使用的是iphone5/5s機(jī)型微信瀏覽器窗口分辨率640*1008。選擇這個(gè)分辨率主要出于以下 2 點(diǎn)綜合考慮:

    1. 客戶端分辨率占比數(shù)。根據(jù)友盟和騰訊云運(yùn)營(yíng)活動(dòng)近幾個(gè)月的數(shù)據(jù)統(tǒng)計(jì),iphone5/5s 640*1136 這個(gè)分辨率是 Ios 平臺(tái)占比最多的,同時(shí)過(guò)高的分辨率對(duì)低端機(jī)型是一種浪費(fèi),需要花額外多的流量來(lái)下載這些資源;

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

    拿最近做的項(xiàng)目舉例,該 H5 頁(yè)面基本可歸類為以下 4 種內(nèi)容類型:

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

    06

    圖1

    這種層實(shí)現(xiàn)最簡(jiǎn)單,采用「fill 模式」適配形式。實(shí)現(xiàn)效果核心代碼如下:

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

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

    09

    圖2

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

    10

    11

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

    12

    圖3

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

    13

    14

    4、大于屏幕的層,可實(shí)現(xiàn)跟隨手勢(shì)移動(dòng)場(chǎng)景畫面,比如(圖4)。

    15

    圖4

    「scale-width 模式」和「scale-height 模式」適合運(yùn)用在這類場(chǎng)景,(圖4)是橫向左右移動(dòng)層,故這里選用「scale-height 模式」適配形式。實(shí)現(xiàn)效果代碼如下:

    16

    17

    18

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

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

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

    還有一些復(fù)雜的層,但無(wú)外乎都可以拆分成以上幾種類型層,將內(nèi)容分層出來(lái),每個(gè)層根據(jù)內(nèi)容形式選用相應(yīng)的適配模式進(jìn)行縮放。

    總結(jié)

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

    2、每一種適配模式都不是絕對(duì)的,需要根據(jù)需求場(chǎng)景選用合適的形式。適配前先跟設(shè)計(jì)師溝通明確適配表現(xiàn)形式,遇到復(fù)雜的場(chǎng)景可以把內(nèi)容拆分出來(lái)區(qū)分適配。當(dāng)頁(yè)面內(nèi)容不適合方向旋轉(zhuǎn)展示,此時(shí)就不要無(wú)腦適配,有兩個(gè)方式可以選擇:

    1. 找設(shè)計(jì)師出一版另一方向的響應(yīng)式設(shè)計(jì)稿然后制作成響應(yīng)式頁(yè)面;

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

    19

    圖5

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

    4、適配相關(guān)的 js 放在 head 里,文檔結(jié)構(gòu)加載完成就先執(zhí)行適配 js,給 body 加一個(gè)顯隱動(dòng)畫規(guī)避在 js 未執(zhí)行完成時(shí)頁(yè)面出現(xiàn)縮放前后,顯隱動(dòng)畫相關(guān)代碼如下:

    20

    最后,以上是我自己在這項(xiàng)目 H5 適配的方法和應(yīng)用,也許有更好的適配方案,請(qǐng)各位不吝賜教,多多指點(diǎn)。


    作者:風(fēng)聆

    來(lái)源:

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


    關(guān)于我們:

    Infocode藍(lán)暢信息技術(shù)有限公司成功為多家世界財(cái)富500強(qiáng)企業(yè)以及其他著名品牌提供優(yōu)質(zhì)服務(wù),是您靠譜的互聯(lián)網(wǎng)開(kāi)發(fā)供應(yīng)商。

    服務(wù)客戶遍及北京、上海、杭州、深圳、廣州、天津、青島、南京、寧波、蘇州、無(wú)錫、廈門、重慶、西安等大中型城市及地區(qū)    為您提供H5開(kāi)發(fā)小程序開(kāi)發(fā),H5外包,微信開(kāi)發(fā)外包,H5商城開(kāi)發(fā),小程序商城開(kāi)發(fā),網(wǎng)站開(kāi)發(fā)外包,H5游戲開(kāi)發(fā),小程序開(kāi)發(fā)外包,小程序設(shè)計(jì)、APP開(kāi)發(fā)外包,UI設(shè)計(jì),SEO優(yōu)化,SEO外包,視頻后期制作等優(yōu)質(zhì)服務(wù)



    本文地址:
    更多內(nèi)容推薦:
    專欄最新閱讀:
    更多文章閱讀請(qǐng)至:技術(shù)專欄
    Tips: 為您提供 微信開(kāi)發(fā)、H5開(kāi)發(fā)、微信小程序開(kāi)發(fā)、微信定制開(kāi)發(fā)網(wǎng)站開(kāi)發(fā)、小程序商城開(kāi)發(fā)、SEO網(wǎng)站優(yōu)化視頻后期制作等定制化開(kāi)發(fā)服務(wù)
    主站蜘蛛池模板: 宿州市| 商城县| 忻城县| 曲阳县| 巨野县| 昌平区| 义乌市| 大姚县| 临夏县| 县级市| 志丹县| 蕉岭县| 丹江口市| 江山市| 台湾省| 九龙县| 万荣县| 驻马店市| 德兴市| 湟中县| 福海县| 儋州市| 永安市| 阳春市| 枞阳县| 莫力| 福海县| 梁平县| 海淀区| 白山市| 建宁县| 阿拉善盟| 太仆寺旗| 瑞金市| 都江堰市| 惠州市| 伊宁县| 新宁县| 游戏| 东阿县| 清水县|