移動端概述和hybird模式、響應式佈局

移動端:運行在移動設備上的產品html

移動設備:手機、平板、touch...前端

咱們之後作的產品大部分都只須要適配IOS系統和安卓系統便可react

響應式佈局:在不一樣的設備上都能給予客戶最好的操做體驗web

產品:瀏覽器

APP:手機應用,目前市面上流行的APP產品大部分都是原生APP開發者作的,可是目前市場上正在趨於使用JS來開發原生的APP:react native、phoneGap...微信

H5:HTML頁面,都是運行在瀏覽器中的(PC端瀏覽器或者移動端的瀏覽器)app

之後工做中咱們這一類前端開發工程師主要作的產品形態都有那些:ide

    PC和移動端公用一套項目的:作一個HTML頁面須要在pc端訪問,也須要在移動端訪問佈局

    PC端和移動端用的是不一樣的項目:例如,京東、淘寶....pc端不須要作響應式,移動端須要作響應式字體

    在移動端咱們開發出來的HTML頁面(H5)運行的環境:

    移動端的瀏覽器:UC、QQ、百度...

    原生APP(Native App)的webView中:hybride模式   例如:在微信中打開一個H5頁面,咱們的H5其實就是一個運行在微信的webView中,

 

hyBride模式:http://old.zhufengpeixun.cn/qianduanjishuziliao/mobileDevelopment/2017-01-09/677.html   // 把握麼開發的H5頁面嵌入到Native APP的webView中運行(所謂的webView你能夠簡單的理解爲一個瀏覽器,也是webkit內核)

 

響應式佈局:

    搭建一個H5頁面,咱們須要在HEAD中添加一個META標籤:

    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

    viewport:視口    Width=device-width 設置視口的寬度等於設備的寬度,若是不設置的話,默認是扣的寬度爲980px,通俗的講:咱們這個操做其實就是告訴當前的瀏覽器按照多少寬度來渲染頁面,換句話說,就是展現當前頁面的區域一共有多寬(瀏覽器的寬度)

    user-scalable=no:禁止用戶手動縮放

    initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0:設置屏幕最大、最小、默認的縮放比例

    高清屏:蘋果手機是2倍高清屏幕的,也就是咱們在手機上看到的那張100*100,其實蘋果手機是按照200*200的尺寸給咱們進行渲染的,這樣的話,若是咱們真實圖片自己才100*100,最後呈現出來的就是被拉伸後變模糊的效果

    -> 蘋果手機上須要的素材圖片都須要比看到的尺寸大一倍才能夠

DPI適配思想:

    咱們在作頁面的時候,最好每一張素材圖片都準備兩套或者三套,一倍圖、二倍圖、三倍圖

媒體查詢:@media

    媒體設備:all 全部設備,screen 全部屏幕設備(pc+移動端) print打印機...

    媒體條件:指定在什麼樣的條件下執行對應的樣式

   

    講解meta的文章:http://old.zhufengpeixun.cn/qianduanjishuziliao/mobileDevelopment/2016-07-02/480.html

    JS動態設置viewport:

    var meta = document.createElement("meta");

    meta.name="viewport";

    meta.content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0";

    documeng.head.appendChild(meta);

響應式佈局的解決方案:

    一、流試佈局法:

        容器或者盒子的寬度通常都不寫固定值,而是使用百分比,相對於視口區域的百分比

        其他的樣式:字體、高度、margin、padding等等都按照實際尺寸來設置

        對於有些尺寸下,咱們設置的固定值看起來不是特別的好看的話,使用media來進行調整

    特殊狀況下:設計的是設計稿是640px,咱們的素材圖也是640px的,這樣的話在ipone6/6 plus戰士的時候,圖片不夠大,對於這種狀況咱們須要單獨找設計師要一張更大的圖

    @media all and (-webkit-min-device-pixel-ratio:2) and (min-width:320px){  }

    @media all and (min-width:641px){  }

   

移動端之meta初設

    <meta name="format-detaction" content="telephone=no" /> 禁止把數字自動識別爲電話號碼

    若是當禁止自動識別電話號後,還想讓某一個數字變爲電話號,那就用a標籤<a href="tel:234567"></a>//識別爲電話     <a href="email:1234567"></a>識別爲郵箱    <a href="sms:1234567"></a>自動發短信

REM響應式佈局:

    —>咱們作的H5頁面只在移動端訪問(REM不兼容低版本的瀏覽器)

        REM:當前頁面中元素的REM單位的樣式值都是針對HTML元素的fontSize的值動態計算的

    第一步:給樣式中的HTML設置一個fontSize的值, 設置多少就等於1rem;好比設置的爲100px,就100px = 1rem;

    第二步:寫樣式的時候,徹底按照設計稿的尺寸來寫樣式,不用管任何的轉換,設計稿給的寬度、高度、字體大小、margin、padding的值是多少咱們就寫多少,可是咱們在寫樣式值煩人時候,須要把獲得的像素值除以100,計算出對應的rem的值,咱們設定的也就是rem的值

        值得注意的是:真實項目中外層盒子的寬度,咱們通常不寫固定值,沿用流式佈局法的方式進行佈局,使用百分比的方式佈局

    第三步:根據當前屏幕的寬度和設計稿的寬度來計算咱們HTML的fontSize的值    

        設計稿:640    600*300    fontSize=100  6rem*3rem

        手機:320    300*150    fontSize=50

        手機:375    (375/640)*100

 

        根據當前屏幕寬度和設計稿寬度的比例,動態計算一下當前寬度下的fontSize值應該是多少,若是fontSize的值改變了,以前設置的全部的rem單位的值自動會跟着放大和縮小

    京東解決方案:

    ~function(){

        var desw = 640,

            winw = document.documentElement.clientWidth,

            ratio = winw/desw;

            //若是當前屏幕的寬度已經大於640了,爲了保障圖片的良好展現,咱們就不在繼續變大了,以設計稿的寬度爲最後的寬度,剩餘的部分留空白顯示在中間

            var omain = document.getElementById("main")

            if(winw>desw ){

                omian.style.width = desw + "px";

                omain.style.margin = "0 auto";

                return;

            }

            document.documentElement.style.fontSize = ratio * 100 + "px";

    }

 

    有些時候須要檢測一下當前的瀏覽器是pc端仍是移動端的

        若是當前的瀏覽器是pc端,可是咱們訪問的頁面是移動端的頁面,咱們讓其跳轉到pc端的頁面

        若是當前的瀏覽器是移動端的,可是咱們訪問的頁面是pc端的頁面,咱們讓其頁面跳轉到移動端的頁面

        跳轉:window.location.href='網址'     

相關文章
相關標籤/搜索