【前端】01 - 移動(dòng)web開(kāi)發(fā)-流式布局

1. 移動(dòng)端基礎(chǔ)

1.1 瀏覽器現(xiàn)狀

  1. PC端常見(jiàn)瀏覽器:360瀏覽器衣赶、谷歌瀏覽器诊赊、火狐瀏覽器、QQ瀏覽器府瞄、百度瀏覽器碧磅、搜狗瀏覽器、IE瀏覽器遵馆。

  2. 移動(dòng)端常見(jiàn)瀏覽器:UC瀏覽器鲸郊,QQ瀏覽器,歐朋瀏覽器货邓,百度手機(jī)瀏覽器秆撮,360安全瀏覽器,谷歌瀏覽器逻恐,搜狗手機(jī)瀏覽器像吻,獵豹瀏覽器,以及其他雜牌瀏覽器复隆。

  3. 國(guó)內(nèi)的UC和QQ拨匆,百度等手機(jī)瀏覽器都是根據(jù)Webkit修改過(guò)來(lái)的內(nèi)核,國(guó)內(nèi)尚無(wú)自主研發(fā)的內(nèi)核挽拂,就像國(guó)內(nèi)的手機(jī)操作系統(tǒng)都是基于Android修改開(kāi)發(fā)的一樣惭每。

  4. 總結(jié):兼容移動(dòng)端主流瀏覽器,處理Webkit內(nèi)核瀏覽器即可亏栈。

1.2 手機(jī)屏幕的現(xiàn)狀

  1. 移動(dòng)端設(shè)備屏幕尺寸非常多台腥,碎片化嚴(yán)重。

  2. Android設(shè)備有多種分辨率:480x800, 480x854, 540x960, 720x1280绒北,1080x1920等黎侈,還有傳說(shuō)中的2K,4k屏闷游。

  3. 近年來(lái)iPhone的碎片化也加劇了峻汉,其設(shè)備的主要分辨率有:640x960, 640x1136, 750x1334, 1242x2208等。

  4. 作為開(kāi)發(fā)者無(wú)需關(guān)注這些分辨率脐往,因?yàn)槲覀兂S玫某叽鐔挝皇?px 休吠。

1.3 常見(jiàn)移動(dòng)端屏幕尺寸

常見(jiàn)移動(dòng)端屏幕尺寸
  1. 其中的 物理像素比 = 實(shí)際像素 / 開(kāi)發(fā)尺寸∫挡荆可以理解為 移動(dòng)端1px * 物理像素比 = 實(shí)際像素瘤礁。

1.4 移動(dòng)端調(diào)試方法

  1. Chrome DevTools(谷歌瀏覽器)的模擬手機(jī)調(diào)試势誊。


    谷歌瀏覽器模擬手機(jī)調(diào)試
  2. 搭建本地web服務(wù)器沟突,手機(jī)和服務(wù)器一個(gè)局域網(wǎng)內(nèi)冠摄,通過(guò)手機(jī)訪問(wèn)服務(wù)器母廷。

  3. 使用外網(wǎng)服務(wù)器戈泼,直接IP或域名訪問(wèn)同诫。

2. 視口

  1. 視口(viewport)就是瀏覽器顯示頁(yè)面內(nèi)容的屏幕區(qū)域咙俩。 視口可以分為布局視口向胡、視覺(jué)視口和理想視口矾湃。

2.1 布局視口 layout viewport

  1. 一般移動(dòng)設(shè)備的瀏覽器都默認(rèn)設(shè)置了一個(gè)布局視口亡脑,用于解決早期的PC端頁(yè)面在手機(jī)上顯示的問(wèn)題。

  2. IOS, Android基本都將這個(gè)視口分辨率設(shè)置為 980px邀跃,所以PC上的網(wǎng)頁(yè)大多都能在手機(jī)上呈現(xiàn)霉咨,只不過(guò)元素看上去很小,一般默認(rèn)可以通過(guò)手動(dòng)縮放網(wǎng)頁(yè)拍屑。

布局視口

2.2 視覺(jué)視口 visual viewport

  1. 字面意思途戒,它是用戶正在看到的網(wǎng)站的區(qū)域。注意:是網(wǎng)站的區(qū)域僵驰。

  2. 我們可以通過(guò)縮放去操作視覺(jué)視口喷斋,但不會(huì)影響布局視口唁毒,布局視口仍保持原來(lái)的寬度。

視覺(jué)視口

2.3 理想視口 ideal viewport

  1. 為了使網(wǎng)站在移動(dòng)端有最理想的瀏覽和閱讀寬度而設(shè)定星爪。

  2. 理想視口浆西,對(duì)設(shè)備來(lái)講,是最理想的視口尺寸顽腾。

  3. 需要手動(dòng)添寫 meta 視口標(biāo)簽通知瀏覽器操作近零。

  4. meta視口標(biāo)簽的主要目的:布局視口的寬度應(yīng)該與理想視口的寬度一致,簡(jiǎn)單理解就是設(shè)備有多寬抄肖,我們布局的視口就多寬

  5. 總結(jié):我們開(kāi)發(fā)最終會(huì)用理想視口久信,而理想視口就是將布局視口的寬度修改為視覺(jué)視口。

2.4 meta標(biāo)簽

        <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no",maximum-scale=1.0,minimum-scale=1.0>
meta標(biāo)簽

2.4.1 最標(biāo)準(zhǔn)的viewport設(shè)置

  1. 視口寬度和設(shè)備保持一致漓摩。

  2. 視口的默認(rèn)縮放比例1.0裙士。

  3. 不允許用戶自行縮放。

  4. 最大允許的縮放比例1.0管毙。

  5. 最小允許的縮放比例1.0潮售。

3. 二倍圖

3.1 物理像素&物理像素比

  1. 物理像素點(diǎn)指的是屏幕顯示的最小顆粒,是物理真實(shí)存在的锅风。這是廠商在出廠時(shí)就設(shè)置好了,比如蘋果6 是 750* 1334酥诽。

  2. 我們開(kāi)發(fā)時(shí)候的1px 不是一定等于1個(gè)物理像素的。

  3. 一個(gè)px的能顯示的物理像素點(diǎn)的個(gè)數(shù)皱埠,稱為物理像素比或屏幕像素比肮帐。

  4. 如果把1張100*100的圖片放到手機(jī)里面會(huì)按照物理像素比給我們縮放。

  5. lRetina(視網(wǎng)膜屏幕)是一種顯示技術(shù)边器,可以將把更多的物理像素點(diǎn)壓縮至一塊屏幕里训枢,從而達(dá)到更高的分辨率,并提高屏幕顯示的細(xì)膩程度忘巧。

  6. 對(duì)于一張 50px * 50px 的圖片,在手機(jī)或 Retina 屏中打開(kāi)恒界,按照剛才的物理像素比會(huì)放大倍數(shù),這樣會(huì)造成圖片模糊砚嘴。

  7. 在標(biāo)準(zhǔn)的viewport設(shè)置中十酣,使用倍圖來(lái)提高圖片質(zhì)量,解決在高清設(shè)備中的模糊問(wèn)題际长。

  8. 通常使用二倍圖耸采, 因?yàn)?code>iPhone 6 的影響背景圖片 注意縮放問(wèn)題。

3.2 背景縮放background-size

  1. background-size 屬性規(guī)定背景圖像的尺寸工育。
    background-size: 背景圖片寬度 背景圖片高度;
  1. 單位: 長(zhǎng)度|百分比|cover|contain虾宇。

  2. cover把背景圖像擴(kuò)展至足夠大,以使背景圖像完全覆蓋背景區(qū)域如绸。

  3. contain 把圖像圖像擴(kuò)展至最大尺寸嘱朽,以使其寬度和高度完全適應(yīng)內(nèi)容區(qū)域旭贬。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"
          ,maximum-scale=1.0,minimum-scale=1.0>
    <title>背景縮放</title>
    <style>
        div {
            width: 500px;
            height: 500px;
            border: 2px solid red;
            background: url(../media/dog.jpg) no-repeat;
            /*background-size: 圖片的寬度 , 圖片的高度;*/
            /*background-size: 500px 200px;*/
            /* 1. 如果只寫一個(gè)參數(shù),該參數(shù)肯定是寬度 , 高度可以省略,這時(shí)將等比例縮放 */
            /*background-size: 500px;*/
            /* 2. 里面的單位可以跟%這時(shí)相對(duì)于父盒子來(lái)說(shuō)的*/
            /*background-size: 50%;*/
            /* 3. background-size:cover; 完全覆蓋div盒子可能有部分背景圖片顯示不全 */
            /*background-size: cover;*/
            /* 4. contain 高度和寬度等比例拉伸當(dāng)寬度或者高度鋪滿div盒子就不再進(jìn)行拉伸,可能會(huì)有部分空白區(qū)域 */
            background-size: contain;
        }
    </style>
</head>
  <body>
    <div></div>
  </body>
</html>

4. 移動(dòng)開(kāi)發(fā)選擇和技術(shù)解決方案

4.1 移動(dòng)端主流方案

4.1.1 單獨(dú)制作移動(dòng)端頁(yè)面(主流)

  1. 通常情況下搪泳,網(wǎng)址域名前面加 m(mobile) 可以打開(kāi)移動(dòng)端骑篙。通過(guò)判斷設(shè)備,如果是移動(dòng)設(shè)備打開(kāi)森书,則跳到移動(dòng)端頁(yè)面。

  2. 也就是說(shuō)谎势,PC 端和移動(dòng)端為兩套網(wǎng)站凛膏,pc 端是 pc 端的樣式,移動(dòng)端再寫一套脏榆,專門針對(duì)移動(dòng)端適配的一套網(wǎng)站猖毫。

4.1.2 響應(yīng)式頁(yè)面兼容移動(dòng)端(其次)

  1. 響應(yīng)式網(wǎng)站:即pc和移動(dòng)端共用一套網(wǎng)站,只不過(guò)在不同屏幕下须喂,樣式會(huì)自動(dòng)適配吁断。

4.2 移動(dòng)端技術(shù)解決方案

4.2.1 移動(dòng)端瀏覽器兼容問(wèn)題

  1. 移動(dòng)端瀏覽器基本以 webkit內(nèi)核為主,因此我們就考慮webkit兼容性問(wèn)題坞生。

  2. 我們可以放心使用 H5 標(biāo)簽和CSS3樣式仔役。

  3. 同時(shí)我們?yōu)g覽器的私有前綴我們只需要考慮添加webkit 即可。

4.2.2 移動(dòng)端公共樣式

  1. 移動(dòng)端 CSS 初始化推薦使用 normalize.css是己。

  2. Normalize.css:保護(hù)了有價(jià)值的默認(rèn)值又兵。

  3. Normalize.css:修復(fù)了瀏覽器的bug。

  4. Normalize.css:是模塊化的卒废。

  5. Normalize.css:擁有詳細(xì)的文檔沛厨。

  6. 官網(wǎng)地址: Normalize.css官網(wǎng)地址

4.3 移動(dòng)端大量使用 CSS3 盒子模型 box-sizing

  1. 傳統(tǒng)模式寬度計(jì)算:盒子的寬度 = CSS中設(shè)置的width + border + padding

  2. CSS3盒子模型: 盒子的寬度= CSS中設(shè)置的寬度width 里面包含了 borderpadding也就是說(shuō)摔认,我們的CSS3中的盒子模型逆皮, paddingborder 不會(huì)撐大盒子了。

/*CSS3盒子模型*/
box-sizing: border-box;
/*傳統(tǒng)盒子模型*/
box-sizing: content-box;
  1. 移動(dòng)端可以全部CSS3 盒子模型参袱。

  2. PC端如果完全需要兼容电谣,我們就用傳統(tǒng)模式,如果不考慮兼容性抹蚀,我們就選擇 CSS3 盒子模型辰企。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"
          ,maximum-scale=1.0,minimum-scale=1.0>
    <title>移動(dòng)端盒子模型</title>
    <style>
        div:nth-child(1) {
            width: 200px;
            height: 200px;
            padding: 5px;
            /* 盒子模型 */
            box-sizing: content-box;
            border: 10px solid red;
            background-color: pink;
        }

        div:nth-child(2) {
            width: 200px;
            height: 200px;
            padding: 5px;   
            /* 移動(dòng)端盒子模型 */
            box-sizing: border-box;
            border: 10px solid skyblue;
            background-color: purple;
        }
    </style>
</head>
<body>
    <div></div>
    <div></div>
</body>
</html>

4.4移動(dòng)端特殊樣式

  1. 移動(dòng)端特殊樣式屬性配置:
     /*CSS3盒子模型*/
    box-sizing: border-box;
    -webkit-box-sizing: border-box;
    /*點(diǎn)擊高亮我們需要清除清除  設(shè)置為transparent 完成透明*/
    -webkit-tap-highlight-color: transparent;
    /*在移動(dòng)端瀏覽器默認(rèn)的外觀在iOS上加上這個(gè)屬性才能給按鈕和輸入框自定義樣式*/
    -webkit-appearance: none;
    /*禁用長(zhǎng)按頁(yè)面時(shí)的彈出菜單*/
    img,a { -webkit-touch-callout: none; }
  1. 屬性案例:
      <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"
          ,maximum-scale=1.0,minimum-scale=1.0>
    <title>移動(dòng)端特殊樣式</title>

    <style>
        a {
            /* 點(diǎn)擊高亮我們需要清除清除  設(shè)置為transparent 完成透明 */
            -webkit-tap-highlight-color: transparent;
        }

        input {
            /* 在移動(dòng)端瀏覽器默認(rèn)的外觀在iOS上加上這個(gè)屬性才能給按鈕和輸入框自定義樣式 */
            -webkit-appearance: none;
        }

        /*禁用長(zhǎng)按頁(yè)面時(shí)的彈出菜單*/
        img, a {
            -webkit-touch-callout: none;
        }

    </style>
</head>
<body>
    <a href="#">點(diǎn)擊</a>
    <input type="button" value="按鈕">
    <img src="../media/dog.jpg" alt="">
</body>
</html>

5. 移動(dòng)端常見(jiàn)布局

5.1 移動(dòng)端單獨(dú)制作

  1. 流式布局(百分比布局)。

  2. flex 彈性布局(強(qiáng)烈推薦)况鸣。

  3. less + rem + 媒體查詢布局牢贸。

  4. 混合布局。

5.2 響應(yīng)式

  1. 媒體查詢镐捧。

  2. bootstarp潜索。

5.3 流式布局:

  1. 流式布局臭增,就是百分比布局,也稱非固定像素布局竹习。

  2. 通過(guò)盒子的寬度設(shè)置成百分比來(lái)根據(jù)屏幕的寬度來(lái)進(jìn)行伸縮誊抛,不受固定像素的限制,內(nèi)容向兩側(cè)填充整陌。

  3. 流式布局方式是移動(dòng) web 開(kāi)發(fā)使用的比較常見(jiàn)的布局方式拗窃。

  4. 經(jīng)常使用 max-widthmin-width 配合使用。

5.4 流式布局代碼案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"
          ,maximum-scale=1.0,minimum-scale=1.0>
    <title>流式布局-百分比布局</title>

    <style>

        * {
            margin: 0;
            padding: 0;
        }

        section {
            width: 100%;
            /* 使用流式布局時(shí)最高給定一個(gè)最大泌辫、最小寬度 */
            max-width: 980px;
            min-width: 320px;
            margin: 100px auto;
        }

        section div {
            float: left;
            width: 50%;
            height: 200px;
        }

        section div:nth-child(1) {
            background-color: pink;
        }

        section div:nth-child(2) {
            background-color: skyblue;
        }

    </style>
</head>
<body>

<section>
    <div></div>
    <div></div>
</section>

</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末随夸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子震放,更是在濱河造成了極大的恐慌宾毒,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殿遂,死亡現(xiàn)場(chǎng)離奇詭異诈铛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)墨礁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門幢竹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人恩静,你說(shuō)我怎么就攤上這事妨退。” “怎么了蜕企?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵咬荷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我轻掩,道長(zhǎng)幸乒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任唇牧,我火速辦了婚禮罕扎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丐重。我一直安慰自己腔召,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布扮惦。 她就那樣靜靜地躺著臀蛛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浊仆,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天客峭,我揣著相機(jī)與錄音,去河邊找鬼抡柿。 笑死舔琅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洲劣。 我是一名探鬼主播备蚓,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼囱稽!你這毒婦竟也來(lái)了郊尝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤粗悯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后同欠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體样傍,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年铺遂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衫哥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡襟锐,死狀恐怖撤逢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粮坞,我是刑警寧澤蚊荣,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站莫杈,受9級(jí)特大地震影響互例,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜筝闹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一媳叨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧关顷,春花似錦糊秆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至平痰,卻和暖如春夫偶,著一層夾襖步出監(jiān)牢的瞬間界睁,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工兵拢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翻斟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓说铃,卻偏偏與公主長(zhǎng)得像访惜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子腻扇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348