摘要:三響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)的基本原理標(biāo)簽,允許頁(yè)面寬度自動(dòng)調(diào)整大多數(shù)移動(dòng)瀏覽器將頁(yè)面放大為寬的視圖以符合屏幕分辨率。解決方案使用,選擇器清除浮動(dòng),只適用于非瀏覽器。由于移動(dòng)設(shè)備屏幕大小的限制,在其上進(jìn)行顯示的內(nèi)容一般是經(jīng)過(guò)精心篩選的。
一、前言
現(xiàn)今,無(wú)論是移動(dòng)設(shè)備、平板電腦、PC,屏幕大小各不相同,若是針對(duì)每個(gè)屏幕大小多帶帶設(shè)計(jì)一個(gè)解決方案,則會(huì)大幅增加網(wǎng)站建設(shè)的復(fù)雜程度和運(yùn)營(yíng)成本。響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)的概念就是可以讓網(wǎng)頁(yè)根據(jù)用戶的使用環(huán)境進(jìn)行自動(dòng)調(diào)整,有效的改善用戶體驗(yàn)。
響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)是什么?
響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)(Responsive Web Design,通常縮寫(xiě)為 RWD),又稱為自適應(yīng)網(wǎng)頁(yè)設(shè)計(jì)、回應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)。是一種現(xiàn)代網(wǎng)頁(yè)設(shè)計(jì)方法,該設(shè)計(jì)基于 CSS3 的媒介查詢(Media Query)特性使得網(wǎng)頁(yè)適應(yīng)不同設(shè)備,即根據(jù)設(shè)備的分辨率和縮放自動(dòng)重新布局,同時(shí)減少縮放、平移和滾動(dòng)。
二、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)(RWD)的元素流動(dòng)網(wǎng)格(Fluid Grids),靈活的圖片(Flexible Images)和媒體查詢(Media Queries)是對(duì)于響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)的三種技術(shù)元素,但它們也是需要不同想法的方式。
三、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)(RWD)的基本原理 3.1 meta 標(biāo)簽,允許頁(yè)面寬度自動(dòng)調(diào)整流式網(wǎng)格:概念要求頁(yè)面元素使用相對(duì)單位如百分比或字體排印學(xué)調(diào)整大小,而不是絕對(duì)的單位如像素或點(diǎn);
靈活的圖片:也以相對(duì)單位調(diào)整大小(最大到 100%),以防止它們顯示在包含它們的元素外面;
媒體查詢:允許網(wǎng)頁(yè)根據(jù)訪問(wèn)站點(diǎn)設(shè)備的特點(diǎn)而使用不同 CSS 樣式規(guī)則,最常用的是瀏覽器的寬度。
大多數(shù)移動(dòng)瀏覽器將 HTML 頁(yè)面放大為寬的視圖(viewport)以符合屏幕分辨率。你可以使用視圖的 meta 標(biāo)簽來(lái)進(jìn)行重置。在 標(biāo)簽里加入這個(gè) meta 標(biāo)簽。
所有主流瀏覽器都支持這個(gè)設(shè)置,包括 IE9。對(duì)于那些老式瀏覽器(主要是 IE6/7/8)并不支持 Media Query。你可以使用 media-queries.js 或者 respond.js 來(lái)為 IE 添加 Media Query 支持。
注意:很多人使用 initial-scale=1.0 到非響應(yīng)式網(wǎng)站上,這會(huì)讓網(wǎng)站以 100% 寬度渲染,用戶需要手動(dòng)移動(dòng)頁(yè)面或者縮放。如果和 initial-scale=1.0 同時(shí)使用 user-scalable=no 或 maximum-scale=1.0,則用戶將不能放大/縮小網(wǎng)頁(yè)來(lái)看到全部的內(nèi)容。
了解更多:常用meta整理 – SegmentFault
3.2 不使用絕對(duì)寬度由于網(wǎng)頁(yè)會(huì)根據(jù)屏幕寬度調(diào)整布局,所以不能使用絕對(duì)寬度的布局,也不能使用具有絕對(duì)寬度的元素。這一條非常重要。
/* CSS 代碼不能指定像素寬度 */ #header { width: 1024px; } /* 只能指定百分比寬度 */ #header { /* 設(shè)定對(duì)象的寬度占父元素 100% */ width: 100%; } /* 或者實(shí)際寬度 */ #header { /* 根據(jù)對(duì)象實(shí)際大小自適應(yīng)寬度 */ width: auto; }3.3 相對(duì)大小的字體
字體也不能使用絕對(duì)大小(px),而只能使用相對(duì)大小(em)。
注意:1em = 16px
body { /* 字體大小是頁(yè)面默認(rèn)大小的 100%,即 16 像素 */ font: normal 100% "Microsoft YaHei",Arial,Helvetica,sans-serif; } h1 { /* h1的大小是默認(rèn)大小的 1.5 倍,即 24 像素(24 / 16 = 1.5) */ font-size: 1.5em; }3.4 流式網(wǎng)格
各個(gè)區(qū)塊的位置都是浮動(dòng)的,不是固定不變的。
#main { width: 100%; } #content { float: left; width: 75%; } #sidebar { float: left; width: 25%; }
浮動(dòng)的好處是,如果寬度太小,放不下兩個(gè)元素,后面的元素會(huì)自動(dòng)滾動(dòng)到前面元素的下方,不會(huì)在水平方向 overflow(溢出),避免了水平滾動(dòng)條的出現(xiàn)。
3.5 靈活的圖片除了布局和文本,RWD 還必須實(shí)現(xiàn)圖片的自動(dòng)縮放。
img { max-width: 100%; }3.6 媒體查詢,CSS 的 @media 規(guī)則
同一個(gè) CSS 文件中,也可以根據(jù)不同的屏幕分辨率,選擇應(yīng)用不同的 CSS 規(guī)則。
/* 當(dāng)屏幕寬度小于 768 像素時(shí), content 塊寬度為 100%(width: 100%),sidebar 塊不顯示(display: none) */ @media screen and (max-width: 768px) { #content { width: 100%; } #sidebar { display: none; } }四、做響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)(RWD)常遇到的幾個(gè)問(wèn)題 4.1 既使用 width: 100%; 又使用固定的 padding-left/padding-right 時(shí),寬度超出設(shè)備屏幕
例如:
#header { padding: 0 200px; width: 100%; height: 50px; background: #fff; }
解決方案:為元素指定的任何內(nèi)邊距和邊框都將在已設(shè)定的寬度和高度內(nèi)進(jìn)行繪制。在 #header 中加入 CSS3 box-sizing 屬性,將其屬性值置為 border-box。
#header { box-sizing: border-box; padding: 0 200px; width: 100%; height: 50px; background: #fff; }
讓所有的元素都使用 border-box,并且包括偽類 :before、:after。
*, *:before, *:after { box-sizing: border-box; }4.2 圖片等比例放大、縮小 1)背景圖像(CSS background 屬性)
解決方案:巧妙運(yùn)用 padding-bottom 或者 padding-top。比如一張照片分辨率為 1440 × 552,那么 padding-bottom 或者 padding-top 的值為(寬 ÷ 長(zhǎng))× 100% = 38.333333% 。
#showcase { padding-bottom: 38.333333%; width: 100%; height: 0; background: url(../images/showcase.jpg) no-repeat center center / cover; }2)網(wǎng)頁(yè)上鏈接圖像(HTML 標(biāo)簽)
例如:
解決方案 1 :巧妙運(yùn)用 CSS max-height 屬性,定義元素的最大高度值。
#showcase img { width: 100%; max-height: 552px; }
解決方案 2 :運(yùn)用 height: auto;,根據(jù)塊內(nèi)內(nèi)容自動(dòng)調(diào)節(jié)高度。
#showcase2 img { width: 100%; height: auto; }
解決方案 3 :該方案與背景圖像運(yùn)用的方案相似,不過(guò)沒(méi)用 CSS position 屬性的話,高度增加一倍。
#showcase3 { position: relative; padding-bottom: 38.333333%; width: 100%; height: 0; } #showcase3 img { position: absolute; width: 100%; height: 100%; }4.3 文本超出指定寬度后用省略號(hào)代替
例如:h1 不換行,文本超出部分用省略號(hào)代替。
解決方案:
h1 { word-break: keep-all; /* 不換行 */ white-space: nowrap; /* 不換行 */ overflow: hidden; /* 內(nèi)容超出寬度時(shí)隱藏超出部分的內(nèi)容 */ text-overflow: ellipsis; /* 當(dāng)對(duì)象內(nèi)文本溢出時(shí)顯示省略標(biāo)記(...);需與 overflow: hidden; 一起使用。*/ }4.4 清除浮動(dòng)
例如:父元素的高度無(wú)法被撐開(kāi),影響與父元素同級(jí)的元素;與浮動(dòng)元素同級(jí)的非浮動(dòng)元素會(huì)跟隨其后;若非第一個(gè)元素浮動(dòng),則該元素之前的元素也需要浮動(dòng),否則會(huì)影響頁(yè)面顯示的結(jié)構(gòu)。
解決方案 1 :讓下一個(gè)塊也浮動(dòng)。
解決方案 2 :使用空標(biāo)簽清除浮動(dòng)。在所有浮動(dòng)標(biāo)簽后面添加一個(gè)空標(biāo)簽,定義 CSS clear:both; 不過(guò)增加了無(wú)意義標(biāo)簽使 HTML 結(jié)構(gòu)看起來(lái)不夠簡(jiǎn)潔。
解決方案 3 :使用 overflow,給包含浮動(dòng)元素的父標(biāo)簽添加 CSS 屬性 overflow: auto; zoom: 1;。zoom: 1; 用于兼容 IE6。
#parent { overflow: auto; zoom: 1; }
解決方案 4 :使用 :before,:after 選擇器清除浮動(dòng),只適用于非 IE 瀏覽器。使用中必須設(shè)置 height: 0;,否則該元素會(huì)比實(shí)際高出若干像素。
#parent:before, #parent:after { content: "."; display: block; height: 0; visibility: hidden; } #parent:after { clear: both; } #parent { zoom: 1; /* 兼容IE < 8 */ } /* 或者 */ #parent:before, #parent:after { content: ""; display: table; } #parent:after { clear: both; overflow: hidden; } #parent { zoom: 1; /* 兼容IE < 8 */ }4.5 DIV 互換
例如:有三個(gè) DIV(如下圖,分別為紅、黃、藍(lán)),當(dāng)分辨率較小時(shí),三個(gè) DIV 重新排列,排列順序變?yōu)?strong>黃、紅、藍(lán)。
解決方案:
#posts { position: relative; width: 100%; } .post { position: absolute; float: left; width: 33.333333%; height: 200px; } .post1 { margin-left: 0%; background: red; } .post2 { margin-left: 33.333333%; background: yellow; } .post3 { margin-left: 66.666666%; background: blue; } @media screen and (max-width: 678px) { .post { width: 100%; } .post1 { margin-top: 200px; margin-left: 0%; } .post2 { margin-top: 0; margin-left: 0%; } .post3 { margin-top: 400px; margin-left: 0%; } }
補(bǔ)充:也可以換個(gè)思維,先做低于 678 px,再做高于 678 px。
五、優(yōu)秀(RWD)網(wǎng)站 5.1 有關(guān)制作 RWD 文章推薦5.2 優(yōu)秀 RWD 網(wǎng)站18個(gè)詳細(xì)響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)教程 – OPEN資訊
響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)-騰訊ISUX
進(jìn)步博客 | 關(guān)注信息無(wú)障礙!
Media Queries
六、總結(jié)首頁(yè)-Suwen
Studio Lovelock
Melanie Daveid
Esquire
一個(gè)網(wǎng)站若是沒(méi)有良好的用戶體驗(yàn),即便有誘人的內(nèi)容也無(wú)法很好的吸引用戶。響應(yīng)式設(shè)計(jì)雖然可以合理的呈現(xiàn)給我們想要的內(nèi)容,但并不是將整個(gè)網(wǎng)頁(yè)完美的縮放給我們。由于移動(dòng)設(shè)備屏幕大小的限制,在其上進(jìn)行顯示的內(nèi)容一般是經(jīng)過(guò)精心篩選的。過(guò)多的內(nèi)容會(huì)使頁(yè)面看起來(lái)雜亂不堪,用戶也很難找到自己想要的東西。
比較好的做法是留下少部分最重要的內(nèi)容直接進(jìn)行展示,其余的部分可以先隱藏起來(lái),用戶點(diǎn)擊時(shí)再展開(kāi)。這樣信息都保留在了頁(yè)面上,但是不要一次性的全都推到用戶面前,用戶可以按需索取想要了解的內(nèi)容。對(duì)于移動(dòng)設(shè)備流量上的考慮,可以設(shè)計(jì)成 AJAX 模式,而不是預(yù)先加載所有的頁(yè)面數(shù)據(jù),這樣可以節(jié)省一部分的流量。
把握好“寬度,位置,樣式”,響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)(RWD)就不難了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/115127.html
摘要:三響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)的基本原理標(biāo)簽,允許頁(yè)面寬度自動(dòng)調(diào)整大多數(shù)移動(dòng)瀏覽器將頁(yè)面放大為寬的視圖以符合屏幕分辨率。解決方案使用,選擇器清除浮動(dòng),只適用于非瀏覽器。由于移動(dòng)設(shè)備屏幕大小的限制,在其上進(jìn)行顯示的內(nèi)容一般是經(jīng)過(guò)精心篩選的。 一、前言 現(xiàn)今,無(wú)論是移動(dòng)設(shè)備、平板電腦、PC,屏幕大小各不相同,若是針對(duì)每個(gè)屏幕大小單獨(dú)設(shè)計(jì)一個(gè)解決方案,則會(huì)大幅增加網(wǎng)站建設(shè)的復(fù)雜程度和運(yùn)營(yíng)成本。響應(yīng)式網(wǎng)頁(yè)設(shè)...
摘要:,除了具有的特點(diǎn)外,這個(gè)模式要求對(duì)文件內(nèi)容和文件元數(shù)據(jù)的每一個(gè)更新都會(huì)同步更新至底層的物理存儲(chǔ)。 RandomAccessFile概覽 對(duì)文件的讀取,既可以按順序,也可以以任意順序來(lái)讀取。RandomAccessFile提供這樣一種功能。其保存一個(gè)指向當(dāng)前文件位置的指針,可以通過(guò)調(diào)整指針的位置,讀取一個(gè)文件中任意的內(nèi)容。通過(guò)一段簡(jiǎn)單的代碼來(lái)有個(gè)大體的認(rèn)識(shí): RandomAccessFi...
摘要:是目前可用框架中無(wú)可爭(zhēng)議的領(lǐng)導(dǎo)者。框架大小預(yù)處理器和響應(yīng)式布局是模塊化是啟動(dòng)模板布局是圖標(biāo)集設(shè)置附加附件無(wú)捆綁,許多第三方插件可用。是排在第二名的框架。是一個(gè)語(yǔ)義化設(shè)計(jì)的前端開(kāi)源框架。 如今出現(xiàn)了大量的CSS前端框架,但真正優(yōu)秀的框架只有少數(shù)幾個(gè)。 本文將會(huì)比較其中五個(gè)最佳的框架。每個(gè)框架都有自己的優(yōu)點(diǎn)和缺點(diǎn),以及具體的應(yīng)用領(lǐng)域,你可以根據(jù)自己的具體項(xiàng)目需求進(jìn)行選擇。此外,許多選項(xiàng)都是...
摘要:的命名必須是行為有語(yǔ)意的。前端工程師拿到視覺(jué)圖,開(kāi)始寫(xiě)時(shí)以手機(jī)版為第一優(yōu)先。手機(jī)開(kāi)啟網(wǎng)頁(yè)很吃手機(jī)效能和網(wǎng)絡(luò)狀況,前端工程師一開(kāi)始就以手機(jī)版為優(yōu)先,可以讓一開(kāi)始載入,使用最少的效能快速載入網(wǎng)頁(yè)。 命名禁止縮寫(xiě) 精簡(jiǎn)扼要地對(duì)class命名,請(qǐng)勿使用自定義縮寫(xiě)。 class name的命名必須是行為、有語(yǔ)意的。 禁止在非特殊情況下寫(xiě)!important CSS本身有權(quán)重設(shè)計(jì),任意地使...
閱讀 1231·2021-11-11 16:54
閱讀 1748·2021-10-13 09:40
閱讀 943·2021-10-08 10:05
閱讀 3508·2021-09-22 15:50
閱讀 3711·2021-09-22 15:41
閱讀 1807·2021-09-22 15:08
閱讀 2349·2021-09-07 10:24
閱讀 3580·2019-08-30 12:52