web響應(yīng)式筆記

我們想要及時地獲取信息剥险,而隨著各種形狀和尺寸的移動設(shè)備的劇增聪蘸,萬維網(wǎng)可以出現(xiàn)在你的口袋里、錢包里表制、背包里健爬,就像它在書桌、餐桌和臥室一樣方便么介。
??現(xiàn)在娜遵,網(wǎng)站的建設(shè)者需要讓訪問者能夠通過移動電話、智能手機壤短、平板電腦设拟、筆記本電腦、臺式機鸽扁、游戲機、電視機以及未來任何可以上網(wǎng)的設(shè)備獲取信息镶骗。響應(yīng)式 Web設(shè)計就是為此誕生的桶现。
??以前,為了滿足移動用戶的需求鼎姊,需要額外建立一個專門為移動設(shè)備設(shè)計的網(wǎng)站骡和。不久之前這種做法還比較流行,但是目前已經(jīng)越來越少見了相寇。不過慰于,現(xiàn)在也還有一些公司在這樣做。有的還為平板電腦建立了第三個網(wǎng)站唤衫。
??不存在可以適應(yīng)所有情形的某種正確方法婆赠。每周都有新的設(shè)備投放到市場上,而且毋庸置疑的是佳励,各家公司都在設(shè)計新的設(shè)備類型休里。那么,構(gòu)建和維護多個網(wǎng)站現(xiàn)實嗎赃承?甚至說妙黍,有必要嗎?我們無法預(yù)知未來的情形瞧剖。
??幸好拭嫁,我們有辦法構(gòu)建一個既可以運行在現(xiàn)在的設(shè)備可免,也可以運行在未來設(shè)備上的網(wǎng)站。更棒的是做粤,可以讓它在較小的屏幕浇借、較大的屏幕以及介于兩者之間的屏幕上顯示不同的效果。

構(gòu)建響應(yīng)式頁面的方法植根于以下三點驮宴。
??靈活的圖像和媒體逮刨。圖像和媒體資源的尺寸是用百分數(shù)定義的,從而可以根據(jù)環(huán)境進行縮放堵泽。
???靈活的修己、基于網(wǎng)格的布局,也就是流式布局迎罗。對于響應(yīng)式網(wǎng)站睬愤,所有的width 屬性都用百分數(shù)設(shè)定,因此所有的布局成分都是相對的纹安。其他水平屬性通常也會使用相對單位(em尤辱、百分數(shù)和 rem 等)。
??媒體查詢厢岂。使用這項技術(shù)光督,可以根據(jù)媒體特征(如瀏覽器可視頁面區(qū)域的寬度)對設(shè)計進行調(diào)整。

以下詳細介紹:

創(chuàng)建彈性布局的步驟

對于需要某個寬度實現(xiàn)預(yù)期布局的元素塔粒,設(shè) 置 width: percentage; 结借, 其 中 percentage表示你希望元素在水平方向上占據(jù)容器空間
的比例。通常說來卒茬,不必設(shè)置 width: 100%; 船老,因為默認設(shè)置為 display:block; 的元素(如 p 以及其他很多元素)或手動設(shè)置為 display: block; 的元素在默認情況下會占據(jù)整個可用空間。
??作為可選的一步圃酵,對包含整個頁面內(nèi)容的元素設(shè)置 max-width: value; 柳畔,其中 value表示你希望頁面最多可增長到的最大寬度 。通常郭赐,value 以像素為單位薪韩,不過也可以使用百分數(shù)、em 值或其他單位的值捌锭。

理解和實現(xiàn)媒體查詢

媒體查詢增強了媒體類型方法躬存,允許根據(jù)特定的設(shè)備特性定位樣式。
要調(diào)整網(wǎng)站的呈現(xiàn)樣式舀锨,讓其適應(yīng)不同的屏幕尺寸岭洲,采用媒體查詢特別方便。下面列出了可以包含在媒體查詢里的媒體特性坎匿。

? width (寬度)
? height (高度)
? device-width (設(shè)備寬度)
? device-height (設(shè)備高度)
? orientation (方向)
 aspect-ratio (高寬比)
? device-aspect-ratio (設(shè)備高寬比)
? color (顏色)
? color-index (顏色數(shù))
? monochrome (單色)
? resolution (分辨率)
? scan (掃描)
? grid (柵格)
還有一些非標準的媒體特性盾剩,如
? -webkit-device-pixel-ratio (WebKit設(shè)備像素比)
? -moz-device-pixel-ratio (Mozilla設(shè)備像素比)

除 了 orientation 雷激、 scan 和 grid 以 外,上述屬性均可添加 min- 和 max- 前綴告私。 min-前綴定位的是“大于等于”對應(yīng)值的目標屎暇,而 max- 前綴定位的則是“小于等于”對應(yīng)值的目標。
??min-width 和max-width是制作響應(yīng)式頁面時反復(fù)用到的兩個媒體特性∽に冢現(xiàn)代桌面瀏覽器和移動電話瀏覽器對媒體查詢的支持程度很高根悼。不過,InternetExplorer 8 及以下版本并不支持媒體查詢蜀撑。
??以下是媒體查詢的基本語法挤巡。

//指向外部樣式表的鏈接:
<link rel="stylesheet" media="logic type and (feature: value)" href="your-stylesheet.css" />

// 位于樣式表中的媒體查詢:
@media logic type and (feature:value) {
/* 目標 CSS 樣式規(guī)則寫在這里  */
}
<head>
<meta charset="utf-8" />
<title>Media query in link</title>
<meta name="viewport" content="width=
   device-width, initial-scale=1.0" />
<link rel="stylesheet" href="base.css"
   media="all" />
   <!--
  The  logic is only.
  The  type  is screen.
  The  feature: value is min-width: 480px.
  -->
<link rel="stylesheet" media="only
  screen and (min-width: 480px)"
  href="styles-480.css" />
</head>

base.css中的樣式用于所有的輸出設(shè)備。styles-480.css 中的樣式則僅用于支持媒體查詢且視覺區(qū)域?qū)挾炔坏陀?480 像素的瀏覽器酷麦。

/*  常規(guī)樣式寫在這里矿卑。
每個設(shè)備都能獲取它們,
除非被媒體查詢中的樣式規(guī)則覆蓋 */
body {
  font: 200%/1.3 sans-serif;
}
p {
  color: green;
}
/*
The  logic is only.
The  type is screen.
The  feature: value is min-width: 480px.
*/
@media only screen and (min-width:480px) {
  p {
    color: red;
    font-weight: bold;
  }
}

通過媒體查詢沃饶,可以根據(jù)設(shè)備的媒體屬性應(yīng)用不同的樣式母廷。盡管媒體查詢包含了很多功能,但其中 min-width 和 max-width 是創(chuàng)建響應(yīng)式網(wǎng)頁時用的最多的糊肤。

<link rel="stylesheet" media="only screen and (min-width: 480px) and(max-width:767px)" href="styles.css" />

<link rel="stylesheet" media="only screen and (orientation: landscape)" href="styles.css" />

<link rel="stylesheet" media="only print and (color)" href="color-pages.css" />
<link rel="stylesheet" media="only print and (monochrome)" href="monochrome- pages.css" />
<link rel="stylesheet" media="only screen and (color), projection and (color)" href="styles.css" />
</head>
<body>
//這些媒體查詢與上圖中的是相同的琴昆,只是直接出現(xiàn)在樣式表中
/*  基準樣式
---------------------------------------- */
/*  針對所有設(shè)備的基準樣式 */
...
/*  開始媒體查詢
---------------------------------------- */
@media only screen and (min-width: 480px) and (max-width: 767px) {
/*  樣式規(guī)則 */
}
@media only screen and (orientation: landscape) {
/*  樣式規(guī)則 */
}
@media only print and (color) {
/*  樣式規(guī)則 */
}
@media only print and (monochrome) {
/*  樣式規(guī)則 */
}
@media only screen and (color), projection and (color) {
/*  樣式規(guī)則 */
}

理解視覺區(qū)域及使用視覺區(qū)域 meta 元素

視覺區(qū)域(viewport)指的是瀏覽器(包括桌面瀏覽器和移動瀏覽器)顯示頁面的區(qū)域。它不包含瀏覽器地址欄馆揉、按鈕這樣的東西业舍,只是瀏覽區(qū)域。媒體查詢的 width 特性對應(yīng)的是視覺區(qū)域的寬度把介。不過勤讽, device-width 特性不是蟋座,它指的是屏幕的寬度拗踢。
??在移動設(shè)備(如iPhone)上,默認情況下這兩個值通常不一樣向臀。Mobile Safari (iPhone的瀏覽器)的視覺區(qū)域默認為 980 像素寬巢墅,但 iPhone 的屏幕只有 320 像素寬(iPhone 的 Retina 顯示屏的屏幕分辨率有640像素寬,但它們是在相同的空間擠入兩倍的像素券膀,因此設(shè)備寬度仍為320像素)君纫。
??因此,iPhone 會像設(shè)為 980 像素寬的桌面瀏覽器那樣顯示頁面芹彬,并將頁面縮小以適應(yīng)320 像素的屏幕寬度(在縱向模式下)蓄髓。結(jié)果,當你在 Mobile Safari 中瀏覽大部分為桌面瀏覽器建立的網(wǎng)站時舒帮,會顯示將這些網(wǎng)站縮小了的樣子会喝。在橫向模式下也是這樣處理的陡叠,只不過寬度為 480 像素(iPhone5 是 568 像素)。如果不進行放大肢执,頁面通常是難以閱讀的(注意不同設(shè)備的默認視覺區(qū)域?qū)挾炔⒉幌嗤?/p>

測試頁面包含一個 320 像素×480 像素的綠色 div 枉阵。Mobile Safari 的視覺區(qū)域默認為 980 像素寬,因此 iPhone 會將該 div 縮小预茄,以在 320 像素寬的屏幕內(nèi)顯示它兴溜。這就是這個綠色盒子大約占據(jù)屏幕寬度的三分之一(即320/980)的緣故。
??幸好耻陕,有一種快速解決方案拙徽。在頁面的 head 部分添加視覺區(qū)域 meta 元素即可。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Your page title</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
...
</head>
<body>

這段代碼的重點是 width=device-width 淮蜈。有了這條語句斋攀,視覺區(qū)域的寬度會被設(shè)成與設(shè)備寬度(對 iPhone 來說為 320 像素)相同的值,因此在縱向模式下該寬度的頁面內(nèi)容會填充整個屏幕梧田。如果不包含這一語句淳蔼,使用媒體查詢的 min-width 和 max-width 特性將不會得到預(yù)期的結(jié)果。
??代碼中的 initial-scale=1. 部分對 width 和 device-width 值沒有影響裁眯,但通常會包含這一語句鹉梨。它將頁面的默認縮放級別設(shè)成了 100%,換成縱向模式也一樣穿稳。(意存皂,iOS6 之前的版本有一個 bug,它會裁掉一部分內(nèi)容逢艘,參見http://adactio.com/journal/5802/旦袋。)如果不設(shè)置 initial-scale=1 ,在 iPhone 中它改,手機從縱向模式改為橫向模式時疤孕,網(wǎng)頁會被放大,從而讓布局與縱向模式的一致央拖。

//兼容ie8/9
<head>
...
<!--[if gt IE 8]><!-->
<link rel="stylesheet" href="css/styles.css" />
<!--<![endif]-->
<!--[if lt IE 9]>
<link rel="stylesheet" href="css/old-ie.css" />
<![endif]-->
</head>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祭阀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鲜戒,更是在濱河造成了極大的恐慌专控,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遏餐,死亡現(xiàn)場離奇詭異伦腐,居然都是意外死亡,警方通過查閱死者的電腦和手機失都,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門柏蘑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颖系,“玉大人,你說我怎么就攤上這事辩越∴叶螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵黔攒,是天一觀的道長趁啸。 經(jīng)常有香客問我,道長督惰,這世上最難降的妖魔是什么不傅? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮赏胚,結(jié)果婚禮上访娶,老公的妹妹穿的比我還像新娘。我一直安慰自己觉阅,他們只是感情好崖疤,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著典勇,像睡著了一般劫哼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上割笙,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天权烧,我揣著相機與錄音,去河邊找鬼伤溉。 笑死般码,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的乱顾。 我是一名探鬼主播板祝,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼糯耍!你這毒婦竟也來了扔字?” 一聲冷哼從身側(cè)響起囊嘉,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤温技,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扭粱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舵鳞,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年琢蛤,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜓堕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛虏。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖套才,靈堂內(nèi)的尸體忽然破棺而出迂猴,到底是詐尸還是另有隱情,我是刑警寧澤背伴,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布沸毁,位于F島的核電站,受9級特大地震影響傻寂,放射性物質(zhì)發(fā)生泄漏息尺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一疾掰、第九天 我趴在偏房一處隱蔽的房頂上張望搂誉。 院中可真熱鬧,春花似錦静檬、人聲如沸炭懊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凛虽。三九已至,卻和暖如春广恢,著一層夾襖步出監(jiān)牢的瞬間凯旋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工钉迷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留至非,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓糠聪,卻偏偏與公主長得像荒椭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舰蟆,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

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