五、響應(yīng)式布局

1、什么是響應(yīng)式布局 Responsive Design

我們開(kāi)發(fā)的頁(yè)面在不同設(shè)備上都能良好展示,常用的設(shè)備:pc、平板、手機(jī)、ipod ...

2、meta便簽中的viewport:

在PC端,一個(gè)頁(yè)面的寬度(HTML的寬度)與瀏覽器的可視窗口寬度是一致的,且PC端的瀏覽器我們可以調(diào)節(jié)大小,手機(jī)端的瀏覽器和手機(jī)的寬度是保持一致的,且一般情況下不能調(diào)節(jié)大小。移動(dòng)端HTML頁(yè)面的寬度和瀏覽器(或者手機(jī))的寬度沒(méi)有必然的聯(lián)系,一般HTML的寬度都是980/1024寬度
我們平時(shí)用手機(jī)瀏覽器訪問(wèn)一個(gè)pc端HTML頁(yè)面,發(fā)現(xiàn)內(nèi)容都縮小了:就是因?yàn)槭謾C(jī)只有320寬度,但是頁(yè)面的寬度確有980,這樣如果把一個(gè)頁(yè)面都要看全的話,只能縮小大概三倍左右

=>解決方案
HTML的寬度應(yīng)該和手機(jī)保持一致,這樣的話就不會(huì)縮小了,這樣的話我們需要給HTML頁(yè)面設(shè)置一個(gè)META標(biāo)簽:

<meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
  • viewport:視口,設(shè)置當(dāng)前瀏覽器按照多大的寬度來(lái)渲染頁(yè)面(或者說(shuō)讓HTML頁(yè)面有多寬)
  • width=device-width 設(shè)置一個(gè)HTML頁(yè)面的總寬度和設(shè)備的寬度(手機(jī)的寬度)保持一致
  • user-scalable=no 禁止用戶手動(dòng)縮放
  • initial-scale=1.0 / maximum-scale=1.0 / minimum-scale=1.0:設(shè)置頁(yè)面的初始(最大、最小)縮放比例都是1:1的(既不放大也不縮小)

以后只要是做移動(dòng)端的產(chǎn)品(只要頁(yè)面需要在手機(jī)上訪問(wèn)),這個(gè)meta 必須要加

layout viewport:布局視口(我們?cè)O(shè)定的就是它)
visual viewport
ideal viewport
詳情見(jiàn):http://www.cnblogs.com/2050/p/3877280.html


3、媒體查詢@media

我們按照上述的原理,增加了viewport,頁(yè)面內(nèi)容不縮小了,但是出現(xiàn)了橫向的滾動(dòng)條,why?
=>原因
HTML的寬度:320(頁(yè)面寬度320)
但是它里面文章article(內(nèi)容)卻有800的寬度,屬于內(nèi)容超出,所以出現(xiàn)了橫向的滾動(dòng)條
=>解決
article的寬度和html的寬度保持一致,不讓內(nèi)容超出頁(yè)面,但是這樣的設(shè)置需要在HTML的寬度小于800PX的時(shí)候在設(shè)置,大于800的時(shí)候(PC),我們寫(xiě)固定的樣式值也沒(méi)有問(wèn)題(內(nèi)容不會(huì)超出),這時(shí)就需要查詢?cè)O(shè)備寬度() =>"媒體查詢@media"

媒體設(shè)備:

all ->所有設(shè)備
screen ->所有屏幕設(shè)備(PC、PAD、PHONE...)
print ->打印機(jī)設(shè)備
...

媒體條件:

width:800px HTML的寬度為800PX
max-width:800px HTML的寬度小于等于800PX
min-width:320px HTML的寬度大于等于320PX
device-width:設(shè)備寬度
max-device-width
min-device-width
orientation:landscape(橫屏) | portrait(豎屏)
-webkit-device-pixel-ratio:屏幕像素密度比

@media all and (max-width:800px) and (min-width:640px){
   符合該媒體查詢條件的設(shè)備執(zhí)行這里面的樣式
   .article{}
}

@media screen and (orientation:landscape){

}

@media screen and (-webkit-device-pixel-ratio:2){

}

總結(jié):
1、增加viewport
2、使用媒體查詢,在指定的條件下調(diào)整樣式
對(duì)于外層容器來(lái)說(shuō),不能設(shè)置具體的寬度了,需要使用百分比
其余的樣式都是寫(xiě)具體的值,如果在某一個(gè)尺寸感覺(jué)不太方便閱讀,我們?cè)谑褂妹襟w查詢細(xì)微調(diào)整即可
=>這種響應(yīng)式布局方案就是“流式布局法(媒體查詢法)” 核心:寬度不固定(百分比),其余都固定,不好在調(diào)整


4、項(xiàng)目中的移動(dòng)端產(chǎn)品形態(tài)

->PC端和移動(dòng)端用的是同一套產(chǎn)品:

1)流式布局
2)先按照PC端寫(xiě),寬度可以寫(xiě)死,也可以寫(xiě)成百分比
3)在手機(jī)端使用@media在一點(diǎn)點(diǎn)的調(diào)整

->PC端和移動(dòng)端用的是不同的產(chǎn)品,PC端一套,移動(dòng)端是單獨(dú)的一套:

1)PC端做的時(shí)候不需要考慮響應(yīng)式(所有的尺寸按照設(shè)計(jì)稿寫(xiě)死即可)
2)移動(dòng)端的項(xiàng)目需要做響應(yīng)式適應(yīng)不同的手機(jī),但是不需要考慮PC了(有些公司會(huì)針對(duì)pad在出一套),可用rem布局或或流式布局
->流式布局:
->REM


5、移動(dòng)端設(shè)計(jì)稿一般都是多大的?

640960 ->iphone4 (320480)
6401136 ->iphone5 (320568)
7501334 ->iphone6 (375667)

給我們的設(shè)計(jì)稿都是比真實(shí)的手機(jī)尺寸擴(kuò)大二倍來(lái)做的(高度可以忽略不管,但是寬度必須是640或者750)

DPR適配:屏幕像素密度比
目前大部分手機(jī)的屏幕像素密度比都是2倍/3倍的在二倍或者更高倍數(shù)的屏幕像素密度比例下,我們?nèi)庋劭吹降母忧逦?br> iphone3 :320480 分辨率 320480
iphone4 :320480 分辨率 640960


6、三種響應(yīng)式布局

設(shè)計(jì)師給我們一個(gè)設(shè)計(jì)稿:640*960

  • ->流式布局法:
    1)寬度百分比自適應(yīng)的
    2)其余的尺寸都按照設(shè)計(jì)稿中的尺寸的一半來(lái)寫(xiě),假設(shè):設(shè)計(jì)稿中 高度是100px,字體大小是36PX,邊框是2PX 我們寫(xiě)的時(shí)候?qū)懀?box{ height:50px; font-size:18px; border:1px solid red; ... }

    問(wèn)題:
    設(shè)計(jì)師設(shè)計(jì)的尺寸不應(yīng)該出現(xiàn)奇數(shù)
    “一像素邊框問(wèn)題”:設(shè)計(jì)師設(shè)計(jì)的邊框大小是1PX,我們布局的時(shí)候?qū)?5PX,瀏覽器不支持半像素的,如何處理? => transform:scale(0.5)

  • ->等比縮放布局(已經(jīng)被PASS了)
    我們布局的時(shí)候嚴(yán)格按照設(shè)計(jì)稿的尺寸來(lái)寫(xiě),例如:設(shè)計(jì)稿中是 300*100 F:36 M:20我們寫(xiě)的時(shí)候

.box{
   width:300px;
   height:100px;
   font-size:36px;
   margin:20px;
   ...
}
JS:
var winW=document.documentElement.clientWidth;
var n=winW/640; //->0.5 或者其他的比例
document.body.style.transform='scale('+n+')';
  • ->REM(等比縮放思想的升級(jí)和目前最流行的響應(yīng)式布局方式)

PX:固定單位,我們寫(xiě)多大的值,以后不管當(dāng)前頁(yè)面有多寬多高,它依然是這樣的值;如果想要它改變的化,我們需要手動(dòng)一個(gè)個(gè)的去調(diào)整

REM:相對(duì)單位,相對(duì)于當(dāng)前頁(yè)面根元素(HTML)字體大小設(shè)定的,例如:

  html{
     font-size:12px; //->1REM = 12PX  一個(gè)頁(yè)面默認(rèn)根元素字體大小16PX(谷歌)
  }

  .box{
     width:10rem; //->120PX
  }

以后只要我們改變HTML的font-size,所有以REM為單位的值都會(huì)跟著改


7、真實(shí)項(xiàng)目中如何使用REM做響應(yīng)式布局開(kāi)發(fā):

設(shè)計(jì)稿:640*960
1、不管以后在什么樣的手機(jī)上運(yùn)行,我們只需要嚴(yán)格按照設(shè)計(jì)稿中標(biāo)注的尺寸來(lái)開(kāi)發(fā)即可
->設(shè)置HTML的font-size:100px =>1REM=100PX =>640的設(shè)計(jì)稿中是這樣換算比例
->設(shè)計(jì)稿中的尺寸是多大,我們布局的時(shí)候就寫(xiě)多大,但是需要把所有量出來(lái)的PX都除以100變換成REM為單位的值

2、在JS中獲取當(dāng)前手機(jī)寬度,例如獲取的是320PX
640 1rem->100PX
320 1rem->(320/640*100) px
根據(jù)屏幕和設(shè)計(jì)稿的比例,動(dòng)態(tài)計(jì)算出最新的REM和PX的換算比例即可,重新設(shè)置HTML的font-size,這樣就讓所有以REM為單位的值都跟著改變了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,615評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,606評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,044評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,826評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,227評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,447評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,992評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,807評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,001評(píng)論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評(píng)論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,243評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,667評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,930評(píng)論 1 287
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,709評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,996評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容