2019-03-25移動(dòng)端適配

一、 常見(jiàn)布局

1.靜態(tài)布局

傳統(tǒng)web布局荔仁。固定大小伍宦,在屏幕大小進(jìn)行調(diào)整使其出現(xiàn)滾動(dòng)條,使用滾動(dòng)條實(shí)現(xiàn)頁(yè)面的瀏覽乏梁。

不管設(shè)備的尺寸大小是多少次洼,都會(huì)按照原來(lái)設(shè)置的大小顯示。

對(duì)于移動(dòng)端布局來(lái)說(shuō)使用一個(gè)單獨(dú)的布局遇骑,比如m站或者wap站卖毁。

2.自適應(yīng)布局

分別為不同的屏幕分辨率設(shè)置布局,布局切換時(shí)頁(yè)面元素發(fā)生變化落萎,但是在每一個(gè)布局中亥啦,頁(yè)面元素不隨著窗口大小的調(diào)整發(fā)生變化。

可以將自適應(yīng)布局看成是靜態(tài)布局的一個(gè)特例练链。元素大小不變翔脱,位置自動(dòng)適應(yīng)變化。主要是浮動(dòng)設(shè)計(jì)兑宇。

3.流式布局

流式布局也叫作百分比布局碍侦。元素的大小會(huì)隨著窗口的大小進(jìn)行調(diào)整粱坤,但是元素的位置不會(huì)發(fā)生變化隶糕。

主要的問(wèn)題是如果設(shè)計(jì)的頁(yè)面很大,那么在小屏幕設(shè)備上要顯示就會(huì)出現(xiàn)變形問(wèn)題站玄。

4.伸縮布局

伸縮盒子或者彈性盒子布局枚驻,CSS3提供的一種全新布局方式。IE不支持株旷。僅使用在移動(dòng)端布局再登。

5.響應(yīng)式布局

分別為不同的屏幕分辨率定義布局尔邓,同時(shí)在每一個(gè)布局中要是用流式布局的理念,也就是元素的寬度會(huì)隨著窗口的大小進(jìn)行調(diào)整锉矢。

可以把響應(yīng)式布局看成是流式布局與自適應(yīng)布局的結(jié)合梯嗽。

優(yōu)點(diǎn):針對(duì)不同的設(shè)備,都能夠完美的展示效果沽损。

缺點(diǎn):開(kāi)發(fā)者需要多套設(shè)備的設(shè)計(jì)樣式灯节,維護(hù)開(kāi)發(fā)成本高。

二绵估、 響應(yīng)式布局

1.什么是響應(yīng)式

前提:和設(shè)備無(wú)關(guān)炎疆。

2.響應(yīng)式的使用場(chǎng)景

圖片1.png

3.設(shè)備類型

媒體的類型:

手機(jī)、電腦国裳、ipad形入、手表、電視缝左、眼鏡

打印機(jī)

iReader亿遂、 kindle

CSS媒體的分類

圖片2.png

媒體查詢的語(yǔ)法:

@media only|not|all 設(shè)備類型 {

}

如果指定的多媒體類型匹配設(shè)備類型則查詢結(jié)果返回 true,文檔會(huì)在匹配的設(shè)備上顯示指定樣式效果盒使。

除非你使用了 not 或 only 操作符崩掘,否則所有的樣式會(huì)適應(yīng)在所有設(shè)備上顯示效果。

4.CSS引用方式

1) link

<link type=”text/css” rel=”stylesheet” href=”” media=”screen” />

2) @import

在style標(biāo)簽或者CSS文件中使用

@import url() screen少办;

3) @media

在style標(biāo)簽或者CSS文件中使用

@media screen{}

@media print{}

5.媒體查詢

CSS3在web開(kāi)發(fā)中引入了一個(gè)新的詞叫做設(shè)備斷點(diǎn)苞慢。意思是不同設(shè)備寬度的臨界值。在媒體查詢中英妓,mix-width與max-width所對(duì)應(yīng)的就是臨界值挽放。

常見(jiàn)設(shè)備的臨界值:<u>https://www.cnblogs.com/daxiang/p/4568938.html</u>

/*#region Bootstrap Media Query */

/* 超小屏幕(手機(jī),小于 768px) */

/* 小屏幕(平板蔓纠,大于等于 768px) */

@media (min-width: 768px) {}

/* 中等屏幕(桌面顯示器辑畦,大于等于 992px) */

@media (min-width: 992px) {}

/* 大屏幕(大桌面顯示器,大于等于 1200px) */

@media (min-width: 1200px) {}

/* screen-xs-max */

@media (max-width: 767px) {}

/* screen-sm-min & screen-sm-max */

@media (min-width: 768px) and (max-width: 991px) {}

/* screen-md-min & screen-md-max */

@media (min-width: 992px) and (max-width: 1199px) {}

/* screen-lg-min */

@media (min-width: 1200px) {}

/*#endregion */

三腿倚、 移動(dòng)端適配

圖片3.png

同樣是3.5英寸的屏幕纯出,但是后者是使用retina技術(shù)實(shí)現(xiàn)的,分辨率足足的高了一倍敷燎。如果把三代的內(nèi)容放在四代機(jī)中顯示暂筝,就會(huì)縮小。同樣如果是pc端的內(nèi)容拿到手機(jī)端顯示硬贯,就會(huì)顯得非常的大焕襟。

圖片4.png

如何能夠在像素分辨率越來(lái)越高的移動(dòng)設(shè)備上顯示正常能夠閱讀的文也稱為一個(gè)問(wèn)題。

1.CSS像素與設(shè)備像素

重新認(rèn)識(shí)像素:像素是個(gè)長(zhǎng)度單位嗎饭豹?pt 與 px

css像素和設(shè)備像素之間是一種可變的轉(zhuǎn)化關(guān)系鸵赖。在100%縮放比例下务漩,1個(gè)css像素等于1個(gè)設(shè)備像素。在表示某一數(shù)目的css像素時(shí)它褪,在放大狀態(tài)下使用了更多的設(shè)備像素饵骨,而在縮小狀態(tài)下使用了更少的設(shè)備像素。這就是css像素和設(shè)備像素的概念茫打。

對(duì)前端開(kāi)發(fā)來(lái)說(shuō)宏悦,設(shè)備像素沒(méi)有意義,我只會(huì)關(guān)心css像素包吝。只有css像素才描述了網(wǎng)頁(yè)的布局與外觀饼煞,我只需要讓我的網(wǎng)頁(yè)在100%縮放比例下看起來(lái)不錯(cuò)就可以了。

在顯示技術(shù)的早期诗越,這倆個(gè)概念可以理解為一個(gè)概念砖瞧,就是像素顆粒。但是隨著retina屏幕的興起嚷狞。設(shè)備像素與CSS像素已經(jīng)不再是一個(gè)相同的概念了块促。

設(shè)備像素是指屏幕上最小的發(fā)色單元,比如在普通的LCD屏幕上床未,任意一個(gè)發(fā)色單元都是由紅綠藍(lán)三個(gè)發(fā)光液晶單元構(gòu)成的竭翠。

CSS像素是與屏幕分辨率有關(guān)的,比如一塊1920 X 1080的24英寸屏幕上薇搁,我們假設(shè)屏幕的設(shè)備像素點(diǎn)都是正方形斋扰,那么一個(gè)像素點(diǎn)的邊長(zhǎng)X與屏幕的尺寸有關(guān)系。

圖片5.png

計(jì)算得出X的大小為0.011英寸啃洋。大概[圖片上傳失敗...(image-c963e5-1553564302076)] 是0.28mm传货。

如果改變屏幕的分辨率,比如設(shè)置為1280 X 720 宏娄,大概像素大小為0.0165英寸问裕。

3.PPI與設(shè)備像素比

PPI是指像素密度。愿意是pixels pre ratio 孵坚,就是每英寸的像素?cái)?shù)粮宛。這里的像素是指設(shè)備像素。

對(duì)于前面提到的0.011像素的屏幕每英寸像素?cái)?shù)大概是90個(gè)卖宠。即PPI為90.

ipone的屏幕分辨率:https://blog.csdn.net/amyloverice/article/details/79389357 對(duì)于ipone4以后的產(chǎn)品巍杈,其PPI都達(dá)到了326,相同的屏幕大小要比很多機(jī)器高很多逗堵。此時(shí)如果CSS像素再與設(shè)備像素保持一致秉氧,人眼將很難看清較小的文字或者圖案眷昆。因此像ipone這樣的設(shè)備蜒秤,系統(tǒng)采用了折中的方式汁咏,將系統(tǒng)分辨率調(diào)整為物理分辨率的1/2或者2/3.這樣就能使的肉眼能夠獲得更好的視覺(jué)體驗(yàn)。也不會(huì)因?yàn)橐曈X(jué)單元太小為疲勞作媚,此時(shí)2或者1.5被稱為設(shè)備像素比攘滩,通過(guò)這個(gè)設(shè)備像素比可以判斷設(shè)備是否為retina設(shè)備,在JavaScript中可以使用window.devidePixelRatio的值來(lái)判斷纸泡。

4.視口

視口的概念在桌面布局中就存在漂问,視口的單位是CSS像素。視口的大小決定了頁(yè)面布局的可用寬度女揭。

通常為960px蚤假。

為了解決視口顯示不完整的問(wèn)題。

移動(dòng)端將視口分為倆種:視覺(jué)視口與布局視口吧兔。

1) 視覺(jué)視口

visual viewport(視覺(jué)視口)設(shè)備物理屏幕的可視區(qū)域磷仰。

2) 布局視口

一般移動(dòng)設(shè)備的瀏覽器都默認(rèn)設(shè)置了一個(gè)viewport 元標(biāo)簽,定義一個(gè)虛擬的layout viewport(布局視口)境蔼,用于解決早期的頁(yè)面在手機(jī)上顯示的問(wèn)題灶平。iOS, Android基本都將這個(gè)視口分辨率設(shè)置為 980px,所以pc上的網(wǎng)頁(yè)基本能在手機(jī)上呈現(xiàn)箍土,只不過(guò)元素看上去很小逢享,一般默認(rèn)可以通過(guò)手動(dòng)縮放網(wǎng)頁(yè)。

在移動(dòng)端吴藻,默認(rèn)的情況下瞒爬,布局視口的寬度是要遠(yuǎn)遠(yuǎn)大于瀏覽器的寬度的。這兩個(gè)視口不同于PC端沟堡,是相互獨(dú)立存在的疮鲫。為什么呢?試想一下弦叶,如果一個(gè)網(wǎng)頁(yè)不對(duì)移動(dòng)端進(jìn)行適配俊犯,用戶進(jìn)行閱讀的時(shí)候,如果默認(rèn)情況下布局視口的寬度等于瀏覽器寬度伤哺,那是不是展示起來(lái)更加的不友好燕侠。也就是說(shuō),如果一個(gè) div的寬度為20%立莉,那么它在布局視口寬度為 980px的時(shí)候绢彤,展示給用戶的像素還有196px,而如果寬度只有 375px的情況下蜓耻,寬度只有 75px茫舶,展示的大小相差特別大。

所以刹淌,瀏覽器廠商為了讓用戶在小屏幕下網(wǎng)頁(yè)也能夠顯示地很好饶氏,所以把布局視口寬度設(shè)置地很大讥耗,一般在 768px~1024px之間,最常見(jiàn)的寬度是 980px疹启。這個(gè)寬度可以通過(guò) document.documentElement.clientWidth得到古程。

瀏覽器可以使用mate標(biāo)簽設(shè)置這個(gè)值。

<meta name=”viewport” content=”width=640” />

此時(shí)整個(gè)頁(yè)面最大的CSS寬度是640px喊崖。你的CSS布局代碼都會(huì)基于這個(gè)基礎(chǔ)值進(jìn)行運(yùn)算挣磨。

3) ideal viewport(理想視口)和 dip (設(shè)備邏輯像素)

ideal viewport(理想視口)通常是我們說(shuō)的屏幕分辨率。

dip (設(shè)備邏輯像素)跟設(shè)備的硬件像素?zé)o關(guān)的荤懂。一個(gè) dip 在任意像素密度的設(shè)備屏幕上都占據(jù)相同的空間茁裙。

比如MacBook Pro的 Retina (視網(wǎng)膜)屏顯示器硬件像素是:2880 *?1800。當(dāng)你設(shè)置屏幕分辨率為 1920 * 1200 的時(shí)候节仿,ideal viewport(理想視口)的寬度值是1920像素呜达, 那么 dip 的寬度值就是1920。設(shè)備像素比是1.5(2880/1920)粟耻。設(shè)備的邏輯像素寬度和物理像素寬度(像素分辨率)的關(guān)系滿足如下公式:

邏輯像素寬度*倍率 = 物理像素寬度

而移動(dòng)端手機(jī)屏幕通常不可以設(shè)置分辨率查近,一般都是設(shè)備廠家默認(rèn)設(shè)置的固定值,換句話說(shuō) dip 的值就是 ideal viewport(理想視口)(也就是分辨率)的值挤忙,比如霜威,iPhone的屏幕分辨率。所以最好的辦法就是將布局視口與這個(gè)分辨率設(shè)置相同册烈。


圖片6.png

4) viewport的參數(shù)

<meta id="viewport" name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1; user-scalable=no;">


圖片7.png

width=device-width 也就是將layout viewport(布局視口)的寬度設(shè)置 ideal viewport(理想視口)的寬度戈泼。網(wǎng)頁(yè)縮放比例為100%時(shí),一個(gè)CSS像素就對(duì)應(yīng)一個(gè) dip(設(shè)備邏輯像素)

5) 參考文檔

<u>https://www.w3cplus.com/css/viewports.html</u>

<u>http://www.cnblogs.com/2050/p/3877280.html</u>

<u>http://web.jobbole.com/90075/</u>

<u>http://www.reibang.com/p/64877ce6e893</u>[圖片上傳失敗...(image-fde25f-1553564302078)]

ipad


圖片8.png

圖片9.png
圖片10.png
圖片11.png
圖片12.png
圖片13.png
圖片14.png
圖片15.png

簡(jiǎn)單的移動(dòng)端適配案例:
html代碼:

<body>
    <div class="container">
            <img src="./images/687474703a2f2f7777772e773363706c75732e636f6d2f73697465732f64656661756c742f66696c65732f626c6f67732f323031352f313531312f72656d2d312e6a7067.jpg" alt="">
    </div>
</body>

css:

*{
        padding:0 ;
        margin:0;
    }
body{
    min-width:100%;
}
@media (min-width:12.266667rem)
{.container {
    width: 12.266667rem;
}
@media (min-width:10.24rem)
{.container {
    width: 10.0rem;
}
@media (min-width: 4.266667rem)
{.container {
    width:320px;
}
.container{
            width:10.0rem;
            margin:0 auto;
        }
.container>img{
    width:100%;
    height:100%;
}

js代碼

<script>
    /(iPhone|iPad|iPhone OS|Phone|iPod|iOS)/i.test(navigator.userAgent)&&(head=document.getElementsByTagName('head'),viewport=document.createElement('meta'),viewport.name='viewport',viewport.content='target-densitydpi=device-dpi, width=480px, user-scalable=no',head.length>0&&head[head.length-1].appendChild(viewport));
</script>

完整代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="yes" name="apple-touch-fullscreen">
    <meta content="telephone=no,email=no" name="format-detection">
    <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
    <title>手淘</title>
    <link rel="stylesheet" href="./css/shoutao1.css">
</head>
<body>
    <div class="container">
            <img src="./images/687474703a2f2f7777772e773363706c75732e636f6d2f73697465732f64656661756c742f66696c65732f626c6f67732f323031352f313531312f72656d2d312e6a7067.jpg" alt="">
    </div>
</body>
<script>
    /(iPhone|iPad|iPhone OS|Phone|iPod|iOS)/i.test(navigator.userAgent)&&(head=document.getElementsByTagName('head'),viewport=document.createElement('meta'),viewport.name='viewport',viewport.content='target-densitydpi=device-dpi, width=480px, user-scalable=no',head.length>0&&head[head.length-1].appendChild(viewport));
</script>
</html>

引入插件:

<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="yes" name="apple-touch-fullscreen">
<meta content="telephone=no,email=no" name="format-detection">
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>

效果:


QQ截圖20190326155216.jpg

QQ截圖Galaxy.S5.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赏僧,一起剝皮案震驚了整個(gè)濱河市大猛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淀零,老刑警劉巖挽绩,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異驾中,居然都是意外死亡唉堪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門肩民,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)唠亚,“玉大人,你說(shuō)我怎么就攤上這事持痰≡钏眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)割卖。 經(jīng)常有香客問(wèn)我前酿,道長(zhǎng),這世上最難降的妖魔是什么究珊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮纵苛,結(jié)果婚禮上剿涮,老公的妹妹穿的比我還像新娘。我一直安慰自己攻人,他們只是感情好取试,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著怀吻,像睡著了一般瞬浓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蓬坡,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天猿棉,我揣著相機(jī)與錄音,去河邊找鬼屑咳。 笑死萨赁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兆龙。 我是一名探鬼主播杖爽,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼紫皇!你這毒婦竟也來(lái)了慰安?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤聪铺,失蹤者是張志新(化名)和其女友劉穎化焕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體铃剔,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锣杂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了番宁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片元莫。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝶押,靈堂內(nèi)的尸體忽然破棺而出踱蠢,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布茎截,位于F島的核電站苇侵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏企锌。R本人自食惡果不足惜榆浓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撕攒。 院中可真熱鬧陡鹃,春花似錦、人聲如沸抖坪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)擦俐。三九已至脊阴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚯瞧,已是汗流浹背嘿期。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埋合,地道東北人秽五。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像饥悴,于是被迫代替她去往敵國(guó)和親坦喘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355