導航:首頁 > 萬維百科 > 如何設計響應式布局網站

如何設計響應式布局網站

發布時間:2021-01-03 15:21:20

1、我想開發一個響應式布局的網站,請問怎麼做

頁面和樣式當然是HTML5+CSS3
但是你需要先設計pc,移動端各種解析度的展示布局。
然後專使用css3的 @media query 根據不同屬解析度寫css樣式,完成不同解析度設備的布局。
相應式網站就是這么做的,主要就是根據不同設備寫不同樣是來實現不不同設備的不同布局顯示。

2、怎麼實現網站的響應式布局,適合不同解析度

如我們需要兼容不同屏幕解析度、清晰度以及屏幕定向方式豎屏(portrait)、橫屏(landscape),怎樣才能做到讓一種設計方案滿足所有情況?對此,馬海祥覺的我們的布局應該是一種彈性的柵格布局,不同尺寸下彈性適應,如以下頁面中各模塊在不同尺寸下的位置:

那麼我們具體要怎麼做呢?
1、Meta標簽定義
使用 viewport meta 標簽在手機瀏覽器上控制布局
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />
通過快捷方式打開時全屏顯示
<meta name="apple-mobile-web-app-capable" content="yes" />
隱藏狀態欄
<meta name="apple-mobile-web-app-status-bar-style" content="blank" />
iPhone會將看起來像電話號碼的數字添加電話連接,應當關閉
<meta name="format-detection" content="telephone=no" />
2、使用Media Queries適配對應樣式
常用於布局的CSS Media Queries有以下幾種:
設備類型(media type):
all所有設備;
screen 電腦顯示器;
print列印用紙或列印預覽視圖;
handheld便攜設備;
tv電視機類型的設備;
speech語意和音頻盒成器;
braille盲人用點字法觸覺回饋設備;
embossed盲文列印機;
projection各種投影設備;
tty使用固定密度字母柵格的媒介,比如電傳打字機和終端。
設備特性(media feature):
width瀏覽器寬度;
height瀏覽器高度;
device-width設備屏幕解析度的寬度值;
device-height設備屏幕解析度的高度值;
orientation瀏覽器窗口的方向縱向還是橫向,當窗口的高度值大於等於寬度時該特性值為portrait,否則為landscape;
aspect-ratio比例值,瀏覽器的縱橫比;
device-aspect-ratio比例值,屏幕的縱橫比。
例子:
/* for 240 px width screen */
@media only screen and (max-device-width:240px){
selector{ ... }
}
/* for 320px width screen */
@media only screen and (min-device-width:241px) and (max-device-width:320px){
selector{ ... }
}
/* for 480 px width screen */
@media only screen (min-device-width:321px)and (max-device-width:480px){
selector{ ... }
}
適用於布局的Media Queries,這里在馬海祥博客上我們就不再做詳述,有興趣的話,可通過官方文檔進一步了解。
3、表格(table)的響應式處理
那麼對於表格(table)的響應式處理該是怎樣的呢?我們該如何突破Table的局限性呢?接下來我們來了解以下的幾種針對表格響應式處理的方法:
(1)、隱藏不重要數據列
處理前:

(點擊查看大圖)
處理後:

實現方法代碼:
@media only screen and (max-width: 800px) {
table td:nth-child(2),
table th:nth-child(2) {display: none;}
}
@media only screen and (max-width: 640px) {
table td:nth-child(4),
table th:nth-child(4),
table td:nth-child(7),
table th:nth-child(7),
table td:nth-child(8),
th:nth-child(8){display: none;}
}
以用戶角度思考,每個人對數據的認知不同,或許你隱藏的數據對於他卻是很重要的,所以對於這種方法馬海祥並不推薦。
(2)、多列橫向變2列縱向
處理前:

處理後:

實現方法:<thead>定位隱藏,<td>變塊元素,並綁定對應<th>列名,然後用偽元素的content:attr(data-th)實現<th>:

(3)、固定首列,剩餘列橫向滾動
處理前:

處理後:

實現原理代碼:
thead {float:left;}
tbody {display:block;width:auto;overflow-x:auto;}
二、響應式內容
1、響應式圖片
帶寬是手機終端的硬傷,如果我們只是頁面布局做了響應式處理,在我們用手機訪問時,請求的圖片還是PC上的大圖;文件體積大,消耗流量多,請求延時長,因此導致的問題也是不可估量的。那麼我們就得把圖片也處理成響應式的根據終端類型尺寸解析度來適配出合理的圖形。

處理原理:瀏覽器獲取用戶終端的屏幕尺寸、解析度邏輯處理後輸出適應的圖片,如屏幕解析度320*480,那麼我們匹配給它的是寬度應小於320px的圖片。如果終端屏幕的DPI(device pixels)DPI詳解值很高,也就是高清屏,那麼我們就得輸出2倍解析度的圖形(寬:640px);以保證在高清屏下圖形的清晰度。各種移動終端的屏幕參數可通過http://screensiz.es/phone查詢。
解決方案:其實W3C已經有一個用於響應式圖形的草案:新定義標簽<picture>,因為它還只是草案,目前還沒有支持的瀏覽器,期待在不久的未來我們能用上。雖然目前不支持,但我們還是來了解下,為之後的內容做個鋪墊。
<picture>是一個圖形element,內容由多個源圖組成,並由CSS Media Queries來適配出合理圖形,代碼規范如下:
<picture width="500" height="500">
 <source media="(min-width: 640px)" srcset="large-1.jpg 1x, large-2.jpg 2x">
 <source media="(min-width: 320px)" srcset="med-1.jpg 1x, med-2.jpg 2x">
 <source srcset="small-1.jpg 1x, small-2.jpg 2x">
 <img src="small-1.jpg" alt="">
 <p>Accessible text</p>
 <!-- Fallback content-->
 <noscript>
 <img src="external/imgs/small.jpg" alt="Team photo">
 </noscript>
</picture>
註:source: 一個圖片源;
media: 媒體查詢,用於適配屏幕尺寸;
srcset: 圖片鏈接,1x適應普通屏,2x適應高清屏;
<noscript/>: 當瀏覽器不支持腳本時的一個替代方案;
<img/>: 初始圖片;另外還有一個無障礙文本,類似<img/>的alt屬性。
雖然<picture>目前還不支持,但它的原理我們是可借鑒的,所以就誕生了一個用於圖片響應式處理的類庫Picturefill
<span data-picture data-alt="圖片描述文本">
 <span data-src="small.jpg"></span>
 <span data-src="medium.jpg" data-media="(min-width: 400px)"></span>
 <span data-src="large.jpg" data-media="(min-width: 800px)"></span>
 <span data-src="extralarge.jpg" data-media="(min-width: 1000px)"></span>
 <!-- 瀏覽器不支持JS時的備用方案. -->
 <noscript>
 <img src="external/imgs/small.jpg" alt="圖片描述文本">
 </noscript>
</span>
其原理就是JS獲取Source的源以及CSS Media Queries規則,輸出適應圖片,邏輯細節這里不再解析,感興趣的可查看其JS代碼,邏輯不是很復雜,也可以自己封裝一個類庫,以適用於自身產品,例如圖片載入失敗的替代方案。
當然,在未來的CSS Image Level 4中已經實現了響應式圖片的原生語法:image-set
<image-set> = image-set([ <image-set-decl>, ]* [ <image-set-decl> | <color>])
<image-set-decl> = [ <image> | <string> ] <resolution>
那麼我們的響應式圖片可以這樣重寫了
background-image:url(default.jpg); /* 普通幕 */
background-image: -webkit-image-set(url(medium.jpg) 1x, url(large.jpg) 2x); /* Retina高清屏 */
註:Webkit 目前只實現了 url() 形式的取值,且dppx值取負值[-2x]貌似也是合法的。
當然除此之外,還有其他的響應式處理,如服務端user-agent嗅探。
2、高解析度(DPI)下的響應式處理
(1)、SVG:優點可承載色彩豐富、設計復雜圖形,且渲染不會出現邊緣不順滑;缺點是IE的支持不完美。
(2)、Icon fonts:支持多瀏覽器,圖形顏色大小的修改成本低,易於維護;圖形表現單一,不支持色彩豐富且復雜的圖形,IE6渲染有毛邊。
(3)、-webkit-image-set:只支持單個圖形的適配,不利於圖形合並,兼容不完美(Safari 6+, Chrome 21+)。
JS檢測:var retina = window.devicePixelRatio > 1;
CSS Media Query:
@media (-webkit-min-device-pixel-ratio: 2), /* Webkit-based browsers */
(min--moz-device-pixel-ratio: 2), /* Older Firefox browsers (prior to Firefox 16) */
(min-resolution: 2dppx), /* The standard way */
(min-resolution: 192dpi) /* dppx fallback */
3、高解析度下的1px border
由於高清屏的特性,1px是由2×2個像素點來渲染,那麼我們樣式上的border:1px在Retina屏下會渲染成2px的邊框,與設計稿有出入,為了追求1px精準還原,我們就不得不拿出一個完美的解決方案。

在Photoshop中,如果需要看似0.5px的邊框,常見的方法就是對1px邊框加上陰影模糊1px。同理,我們在retina屏下需要做到真實的1px邊框,可利用box-shadow屬性模擬。
@media only screen and (-webkit-min-device-pixel-ratio:1.5),
only screen and (min-device-pixel-ratio:1.5) {
button {
border:none;
padding:0 16px;
box-shadow: inset 0 0 1px #000,
inset 0 1px 0 #75c2f8,
0 1px 1px -1px rgba(0, 0, 0, .5);
}
}

3、mui如何做響應式布局

響應式網站設來計(Responsive Web design)的理念是:源頁面的設計與開發應當根據用戶行為以及設備環境(系統平台、屏幕尺寸、屏幕定向等)進行相應的響應和調整。具體的實踐方式由多方面組成,包括彈性網格和布局、圖片、CSS media query的使用等。無論用戶正在使用筆記本還是iPad,我們的頁面都應該能夠自動切換解析度、圖片尺寸及相關腳本功能等,以適應不同設備;換句話說,頁面應該有能力去自動響應用戶的設備環境。響應式網頁設計就是一個網站能夠兼容多個終端——而不是為每個終端做一個特定的版本。這樣,我們就可以不必為不斷到來的新設備做專門的版本設計和開發了。

4、響應式布局該怎麼設計

三、響應式布局該怎麼設計?
那在我們的實際項目中應該怎麼去設計呢?在以往我們設計網站的時候都會受到不同瀏覽器的兼容性的困擾,現在還要來個不同尺寸設備,我們該怎麼淡定下來呢?有需求就會有解決方案,呵呵,說到響應式布局,就不得不提起CSS3中的Media Query(媒介查詢),這可是個好東西,易用、強大、快捷……Media Query是製作響應式布局的一個利器,使用這個工具,我們可以非常方便快捷的製造出各種豐富的實用性強的界面。接下來就一起來深入的了解Media Query。
當瀏覽器的解析度小於1024px的時候,則通過Media Query預設的樣式表來將頁面的寬度設置為百分比顯示,這樣子頁面的結構元素就會根據瀏覽器的的尺寸來進行相對應的調整。同理,當瀏覽器的可視區域改變到某個值(假如為650px)的時候,頁面的結構元素根據Media Query預設的層疊樣式表來進行相對應的調整。看看我們的例子:
/* 當瀏覽器的可視區域小於980px */
@media screen and (max-width: 980px) {
#wrap {width: 90%; margin:0 auto;}
#content {width: 60%;padding: 5%;}
#sidebar {width: 30%;}
#footer {padding: 8% 5%;margin-bottom: 10px;} }
/* 當瀏覽器的可視區域小於650px */
@media screen and (max-width: 650px) { #header {height: auto;}
#searchform {position: absolute;top: 5px;right: 0;}
#content {width: auto; float: none; margin: 20px 0;}
#sidebar {width: 100%; float: none; margin: 0;} }
通過上面我們就可以監測瀏覽器的可視區域變化的是時候我們的頁面結構元素也會相對應的變化,當然你可以再多設置幾個尺寸的監測層疊樣式表,這樣子就可以根據不同尺寸設備來進行響應式的布局。為了更好的顯示效果,我們往往還要格式化一些CSS屬性的初始值:
/* 禁用iPhone中Safari的字型大小自動調整 */
html { -webkit-text-size-adjust: none; }
/* 設置HTML5元素為塊 */
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; }
/* 設置圖片視頻等自適應調整 */
img { max-width: 100%; height: auto; width: auto\9; /* ie8 */ }
.video embed, .video object, .video iframe { width: 100%; height: auto; }
最後要注意的是在頁面的頭部<head></head>之間加上下面這句∶
<meta name="viewport" content="width=device-width; initial-scale=1.0">
meta viewport這個屬性是在移動設備上設置原始大小顯示和是否縮放的聲明。
參數設置∶
width – viewport的寬度
height – viewport的高度
initial-scale – 初始的縮放比例
minimum-scale – 允許用戶縮放到的最小比例
maximum-scale – 允許用戶縮放到的最大比例
user-scalable – 用戶是否可以手動縮放
最後對於在IE瀏覽器中不支持media query的情況,我們可以使用Media Query JavaScript來解決,只需要在頁面頭部引用css3-mediaqueries.js即可。示例:

5、響應式布局有幾種方法

1.原生代碼實現。在國內目前設計網頁的時候,一般會分成PC端和移動端兩套頁面... 還有其他方式,

6、什麼是響應式布局,響應式布局該如何設計

簡而言之,就是一個網站能夠兼容多個終端——而不是為每個終端做一個特定的版本。這個概專念是為解屬決移動互聯網瀏覽而誕生的。也就是說,不管你是pc端還是移動端(包括手機和平板等小解析度的),他都能夠根據你的不同的解析度做出調整,即響應,完整的很好的把效果顯示出來。優點是面對不同解析度設備靈活性強;能夠快捷解決多設備顯示適應問題。如果你在pc端調試會發現,他會隨著你窗口的解析度的變化而變化。目前比較常用的框架是bootstrap。。。

7、wordpress網站做響應式布局的幾個方案

響應式網站設計(Responsive Web design)的理念是:頁面的設計與開發應當根據用戶行為以及設備環境回(系統平台、屏幕答尺寸、屏幕定向等)進行相應的響應和調整。具體的實踐方式由多方面組成,包括彈性網格和布局、圖片、CSS media query的使用等。無論用戶正在使用筆記本還是iPad,我們的頁面都應該能夠自動切換解析度、圖片尺寸及相關腳本功能等,以適應不同設備;換句話說,頁面應該有能力去自動響應用戶的設備環境。響應式網頁設計就是一個網站能夠兼容多個終端——而不是為每個終端做一個特定的版本。這樣,我們就可以不必為不斷到來的新設備做專門的版本設計和開發了。

8、如何實現網站的響應式布局,適合不同解析度

建議你去學一下前端框架,比如bootstrap,Foundation

與如何設計響應式布局網站相關的知識