自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通過CSS3 Media Query實(shí)現(xiàn)響應(yīng)式Web設(shè)計(jì)

開發(fā) 前端
在之前一篇譯文中,我們了解了響應(yīng)式Web設(shè)計(jì)的概念、組成要素以及基本的實(shí)現(xiàn)思路。今天繼續(xù)相關(guān)話題,我們將從前文介紹過的“彈性布局結(jié)構(gòu)”這方面出發(fā),通過一個(gè)具體的實(shí)例來深入學(xué)習(xí)。

在之前一篇譯文中,我們了解了響應(yīng)式Web設(shè)計(jì)的概念、組成要素以及基本的實(shí)現(xiàn)思路。今天繼續(xù)相關(guān)話題,我們將從前文介紹過的“彈性布局結(jié)構(gòu)”這方面出發(fā),通過一個(gè)具體的實(shí)例來深入學(xué)習(xí)。

如今的屏幕分辨率,小至320px(iPhone),大到2560px甚至更高(大顯示器),變化范圍極大。除了使用傳統(tǒng)的臺(tái)式機(jī),用戶會(huì)越來越多的通過手機(jī)、上網(wǎng)本、iPad一類的平板設(shè)備來瀏覽頁面。這種情況下,固定寬度的設(shè)計(jì)方案將會(huì)顯得越發(fā)不合理。頁面需要有更好的適應(yīng)性,其布局結(jié)構(gòu)要做到根據(jù)不同的設(shè)備及屏幕分辨率進(jìn)行響應(yīng)調(diào)整。接下來,我們將了解一下怎樣通過HTML5和CSS3 Media Queries(媒介查詢)相關(guān)技術(shù)來實(shí)現(xiàn)跨設(shè)備跨瀏覽器的響應(yīng)式Web設(shè)計(jì)方案。

范例效果預(yù)覽

首先,我們來看看本篇范例的最終效果演示。打開該頁面,拖拽瀏覽器邊框,將窗口慢慢縮小,同時(shí)觀察頁面結(jié)構(gòu)及元素布局是怎樣基于寬度變化而自動(dòng)響應(yīng)調(diào)整的。

 

html5-css3-responsive-web-design-final-demo

 

更多范例

我(原文作者)使用media query的方式設(shè)計(jì)了一些WordPress模板,比如Tisa、Elemin、Suco、iTheme2、Funki、Minblr和Wumblr等。

概述

我們將范例頁面的父級(jí)容器寬度設(shè)置為固定的980px,對(duì)于桌面瀏覽環(huán)境,該寬度適用于任何寬于1024像素的分辨率。我們通過media query來監(jiān)測(cè)那些寬度小于980px的設(shè)備分辨率,并將頁面的寬度設(shè)置由“固定”方式改為“液態(tài)”,布局元素的寬度隨著瀏覽器窗口的尺寸變化進(jìn)行調(diào)整。當(dāng)可視部分的寬度進(jìn)一步減小到650px以下時(shí),主要內(nèi)容部分的容器寬度會(huì)增大至全屏,而側(cè)邊欄將被置于主內(nèi)容部分的下方,整個(gè)頁面變?yōu)閱螜诓季帧?/p>

 

html5-css3-responsive-web-design-design-overview

 

HTML代碼

我們將把注意力集中在頁面的主要布局方面,并使用HTML5標(biāo)簽來更加語義化的實(shí)現(xiàn)這些結(jié)構(gòu),包括頁頭、主要內(nèi)容部分、側(cè)邊欄和頁腳:

  1. <div id="pagewrap"> 
  2.    
  3.     <header id="header"> 
  4.         <hgroup> 
  5.             <h1 id="site-logo">Demo</h1> 
  6.             <h2 id="site-description">Site Description</h2> 
  7.         </hgroup> 
  8.         <nav> 
  9.             <ul id="main-nav"> 
  10.                 <li><a href="#">Home</a></li> 
  11.             </ul> 
  12.         </nav> 
  13.         <form id="searchform"> 
  14.             <input type="search"> 
  15.         </form> 
  16.     </header> 
  17.        
  18.     <div id="content"> 
  19.         <article class="post"> 
  20.             blog post  
  21.         </article> 
  22.     </div> 
  23.        
  24.     <aside id="sidebar"> 
  25.         <section class="widget"> 
  26.              widget  
  27.         </section> 
  28.     </aside> 
  29.    
  30.     <footer id="footer"> 
  31.         footer  
  32.     </footer> 
  33.        
  34. </div> 

HTML5

IE是永恒的話題;對(duì)于我們使用的HTML5標(biāo)簽,IE9之前的版本無法提供支持。目前的***解決方案仍是通過html5.js來幫助這些舊版本的IE瀏覽器創(chuàng)建HTML5元素節(jié)點(diǎn)。在我們的頁面HTML代碼中調(diào)用該JS文件:

  1. <!--[if lt IE 9]> 
  2.     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
  3. <![endif]--> 

CSS

HTML5塊級(jí)元素樣式

首先仍是瀏覽器兼容問題。雖然我們已經(jīng)可以在低版本的IE中創(chuàng)建HTML5元素節(jié)點(diǎn),但還是需要在樣式方面做些工作,將這些“新”元素聲明為塊級(jí):

  1. article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {   
  2.     display: block;  

主要結(jié)構(gòu)的CSS

忽略細(xì)節(jié),我們?nèi)允菍⒆⒁饬性诖髥栴}上。正如在前文“概述”中提到的,默認(rèn)情況下頁面容器的固定寬度為980像素,頁頭部分(header)的固定高度為160像素;主要內(nèi)容部分(content)的寬度為600像素,左浮動(dòng);側(cè)邊欄(sidebar)右浮動(dòng),寬度為280像素。

  1. #pagewrap {  
  2.     width: 980px;  
  3.     margin: 0 auto;  
  4. }  
  5.    
  6. #header {  
  7.     height: 160px;  
  8. }  
  9.    
  10. #content {  
  11.     width: 600px;  
  12.     float: left;  
  13. }  
  14.    
  15. #sidebar {  
  16.     width: 280px;  
  17.     float: right;  
  18. }  
  19.    
  20. #footer {  
  21.     clear: both;  

截至目前的效果演示

目前我們只是初步完成了頁面結(jié)構(gòu)的HTML和默認(rèn)結(jié)構(gòu)樣式,當(dāng)然,并不包括那些與話題無關(guān)的細(xì)節(jié)實(shí)現(xiàn)問題。正如可以在目前的演示中看到的,由于還沒有做任何media query方面的工作,頁面還不能隨著瀏覽器尺寸的變化而改變布局。

#p#

CSS3 Media Query

終于開始說正事兒了。首先我們需要在頁面中調(diào)用css3-mediaqueries.js文件,來幫助IE8或是之前的版本支持CSS3 media queries:

  1. <!--[if lt IE 9]> 
  2.     <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> 
  3. <![endif]--> 

接下來,我們要?jiǎng)?chuàng)建CSS樣式表,并在頁面中調(diào)用:

  1. <link href="media-queries.css" rel="stylesheet" type="text/css"> 

當(dāng)瀏覽器可視部分寬度大于650px小于980px時(shí)(液態(tài)布局)

◆ 將pagewrap的寬度設(shè)置為95%

◆ 將content的寬度設(shè)置為60%

◆ 將sidebar的寬度設(shè)置為30%

  1. @media screen and (max-width: 980px) {  
  2.    
  3.     #pagewrap {  
  4.         width: 95%;  
  5.     }  
  6.    
  7.     #content {  
  8.         width: 60%;  
  9.         padding: 3% 4%;  
  10.     }  
  11.    
  12.     #sidebar {  
  13.         width: 30%;  
  14.     }  
  15.     #sidebar .widget {  
  16.         padding: 8% 7%;  
  17.         margin-bottom: 10px;  
  18.     }  
  19.    

當(dāng)瀏覽器可視部分寬度小于650px時(shí)(單欄布局)

◆ 將header的高度設(shè)置為auto

◆ 將searchform絕對(duì)定位在top 5px的位置

◆ 將main-nav、site-logo、site-description的定位設(shè)置為static

◆ 將content的寬度設(shè)置為auto(主要內(nèi)容部分的寬度將擴(kuò)展至滿屏),并取消float設(shè)置

◆ 將sidebar的寬度設(shè)置為100%,并取消float設(shè)置

  1. @media screen and (max-width: 650px) {  
  2.    
  3.     #header {  
  4.         height: auto;  
  5.     }  
  6.    
  7.     #searchform {  
  8.         position: absolute;  
  9.         top: 5px;  
  10.         right: 0;  
  11.     }  
  12.    
  13.     #main-nav {  
  14.         position: static;  
  15.     }  
  16.    
  17.     #site-logo {  
  18.         margin: 15px 100px 5px 0;  
  19.         position: static;  
  20.     }  
  21.    
  22.     #site-description {  
  23.         margin: 0 0 15px;  
  24.         position: static;  
  25.     }  
  26.    
  27.     #content {  
  28.         width: auto;  
  29.         float: none;  
  30.         margin: 20px 0;  
  31.     }  
  32.    
  33.     #sidebar {  
  34.         width: 100%;  
  35.         float: none;  
  36.         margin: 0;  
  37.     }  
  38.    

當(dāng)瀏覽器可視部分寬度小于480px時(shí)

480px也就是iPhone橫屏?xí)r的寬度。當(dāng)可視部分的寬度小于該數(shù)值時(shí),我們需要做以下調(diào)整:

◆ 禁用html節(jié)點(diǎn)的字號(hào)自動(dòng)調(diào)整。默認(rèn)情況下,iPhone會(huì)將過小的字號(hào)放大,我們可以通過-webkit-text-size-adjust屬性進(jìn)行調(diào)整。

◆ 將main-nav中的字號(hào)設(shè)置為90%

彈性圖片

我們需要為圖片設(shè)置max-width: 100%和height: auto,來實(shí)現(xiàn)其彈性化。對(duì)于IE,仍然需要一點(diǎn)額外的工作:

  1. img {  
  2.     max-width: 100%;  
  3.     height: auto;  
  4.     width: auto\9; /* ie8 */  

彈性內(nèi)嵌視頻

同樣的,對(duì)于視頻,我們也需要做max-width: 100%的設(shè)置;但是Safari對(duì)embed的該屬性支持不是很給力,所以我們以width: 100%來代替:

  1. .video embed,  
  2. .video object,  
  3. .video iframe {  
  4.     width: 100%;  
  5.     height: auto;  

iPhone中的初始化縮放

默認(rèn)情況下,iPhone中的Safari瀏覽器會(huì)對(duì)頁面進(jìn)行自動(dòng)縮放,以適應(yīng)屏幕尺寸。我們可以使用以下的meta設(shè)置,將設(shè)備的默認(rèn)寬度作為頁面在Safari的可視部分寬度,并禁止初始化縮放。

  1. <meta name="viewport" content="width=device-width; initial-scale=1.0"> 

最終效果演示

該范例的最終演示正像我們?cè)诒疚拈_始時(shí)看到的那樣;另外記得,在條件允許的情況下,使用各種典型移動(dòng)設(shè)備(iPhone、iPad、Android、Blackberry等)來檢驗(yàn)頁面的移動(dòng)版本。

 

html5-css3-responsive-web-design-final-demo

 

要點(diǎn)總結(jié)

Media Query JavaScript

對(duì)于那些尚不支持media query的瀏覽器,我們要在頁面中調(diào)用css3-mediaqueries.js

  1. <!--[if lt IE 9]> 
  2.     <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> 
  3. <![endif]--> 

CSS Media Queries

實(shí)現(xiàn)自適應(yīng)頁面設(shè)計(jì)的關(guān)鍵之一,就是使用CSS根據(jù)分辨率寬度的變化來調(diào)整頁面布局結(jié)構(gòu)。

  1. @media screen and (max-width: 560px) {  
  2.    
  3.     #content {  
  4.         width: auto;  
  5.         float: none;  
  6.     }  
  7.    
  8.     #sidebar {  
  9.         width: 100%;  
  10.         float: none;  
  11.     }  
  12.    

彈性圖片

通過max-width: 100%和height: auto實(shí)現(xiàn)圖片的彈性化。

  1. img {  
  2.     max-width: 100%;  
  3.     height: auto;  
  4.     width: auto\9; /* ie8 */  

彈性內(nèi)嵌元素(視頻)

通過width: 100%和height: auto實(shí)現(xiàn)內(nèi)嵌元素的彈性化。

  1. .video embed,  
  2. .video object,  
  3. .video iframe {  
  4.     width: 100%;  
  5.     height: auto;  

字號(hào)自動(dòng)調(diào)整的問題

通過-webkit-text-size-adjust:none禁用iPhone中Safari的字號(hào)自動(dòng)調(diào)整

  1. html {  
  2.     -webkit-text-size-adjust: none;  

頁面寬度縮放的問題

  1. <meta name="viewport" content="width=device-width; initial-scale=1.0"> 

原文:http://beforweb.com/node/7/page/0/1

【編輯推薦】

  1. 什么是響應(yīng)式Web設(shè)計(jì)?怎樣進(jìn)行?
  2. 響應(yīng)式Web設(shè)計(jì)之初探圖像處理
  3. 響應(yīng)式web設(shè)計(jì)之深挖圖像處理技術(shù)
  4. 響應(yīng)設(shè)計(jì)的技巧,秘訣和***實(shí)踐
責(zé)任編輯:陳貽新 來源: beforweb.com
相關(guān)推薦

2010-07-23 11:21:39

iPhoneCSS3Media Queri

2012-05-27 18:28:46

jQuery Mobi

2013-03-04 14:13:13

HTML5CSS3響應(yīng)式

2012-02-21 16:39:29

響應(yīng)式Web設(shè)計(jì)

2013-07-09 09:24:29

響應(yīng)式HTML5CSS3

2010-03-22 08:56:12

2013-03-06 10:03:25

Open WebHTML5CSS3

2023-04-14 16:45:21

CSS前端CSS3

2013-05-31 02:25:47

WebWeb設(shè)計(jì)響應(yīng)式

2012-01-09 14:48:15

響應(yīng)式Web

2014-08-13 15:55:17

Web響應(yīng)式設(shè)計(jì)design

2012-01-12 09:32:17

響應(yīng)式Web設(shè)計(jì)

2012-10-11 09:09:26

jQueryJSWeb

2020-06-09 11:35:30

Vue 3響應(yīng)式前端

2012-05-09 10:39:48

Web響應(yīng)式設(shè)計(jì)

2014-08-05 14:49:39

Web響應(yīng)式設(shè)計(jì)design

2013-06-18 09:40:21

Web設(shè)計(jì)響應(yīng)式Web響應(yīng)式教程

2012-02-13 09:30:51

響應(yīng)式Web設(shè)計(jì)

2012-05-29 10:44:17

WebApp

2012-01-12 09:45:05

響應(yīng)式web設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)