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

CSS3 Media Query:移動(dòng)Web開(kāi)發(fā)的完美開(kāi)端

移動(dòng)開(kāi)發(fā)
CSS3 Media Query,在CSS2時(shí)代,如果你曾經(jīng)為你的網(wǎng)站設(shè)計(jì)過(guò)打印版CSS,就會(huì)明白CSS3 Media Queries的作用,它可以幫助您獲取很多數(shù)據(jù)。

移動(dòng)時(shí)代,是任何Web設(shè)計(jì)與開(kāi)發(fā)者都不能忽視的一個(gè)時(shí)代,總有一天,你設(shè)計(jì)的東西將被顯示在兩種屏幕上,桌面大屏幕和移動(dòng)小屏幕,如何讓同一個(gè)網(wǎng)站同時(shí)適應(yīng)完全不同的兩種尺寸的屏幕,這是一個(gè)很久以來(lái)都沒(méi)有***解決方案的問(wèn)題,直到有了CSS3。

51CTO推薦專(zhuān)題:iPhone應(yīng)用程序開(kāi)發(fā)初探

CSS3的Media Queries

在CSS2時(shí)代,如果你曾經(jīng)為你的網(wǎng)站設(shè)計(jì)過(guò)打印版CSS,就會(huì)明白CSS3 Media Queries的作用,不過(guò),CSS3的Media Queries比CSS2的Media Type更實(shí)用,事實(shí)上,CSS2的Media Type并不曾被多少設(shè)備所支持過(guò)。CSS3的Media Queries可以幫你獲取以下數(shù)據(jù):

◆瀏覽器窗口的寬和高

◆設(shè)備的寬和高

◆設(shè)備的手持方向,橫向還是豎向

◆分辨率

如果用戶有一個(gè)支持Media Queries的設(shè)備,我們就可以為該設(shè)備編寫(xiě)專(zhuān)門(mén)的CSS,讓網(wǎng)站適應(yīng)這個(gè)設(shè)備的小屏幕,英國(guó)的Web技術(shù)大會(huì)dConstruct便基于該技術(shù)推出他們的2010年大會(huì)網(wǎng)站,手機(jī)也可以輕松訪問(wèn),以下是該網(wǎng)站的桌面版和手機(jī)版截圖:

[[13337]] 

桌面版和手機(jī)版截圖

這個(gè)網(wǎng)站在不同尺寸的設(shè)備上按不同的布局顯示,并且,手機(jī)版在iPhone,Opera Mini,Android等設(shè)備上有完全一致的表現(xiàn)。

#p#

使用Media Queries為手機(jī)創(chuàng)建單獨(dú)的CSS

我們舉一個(gè)簡(jiǎn)單的兩欄式結(jié)構(gòu)的例子。

使用Media Queries為手機(jī)創(chuàng)建單獨(dú)的CSS

為了讓這個(gè)布局更好地在手機(jī)上顯示,我們?yōu)槭謾C(jī)版設(shè)計(jì)一個(gè)一欄式布局,且縮小 header 部分的圖片大小。使用Media Queries最直接的方法是,在你的 CSS 代碼中,加一段獨(dú)立代碼分支,如下:

  1. @media only screen and (max-device-width: 480px) {  
  2.  
  3. }  
  4. @media only screen and (max-device-width: 480px) {  
  5.  
  6. }  

接著,在這個(gè)分支中,為小屏幕編寫(xiě)?yīng)毩⒌腃SS定義,這些定義可以覆蓋桌面版CSS中的相應(yīng)定義(只要將這段分支代碼放在后面),以下針對(duì)小屏幕的CSS將布局變成一欄式,且使用了小尺寸的Header圖片:

  1. @media only screen and (max-device-width: 480px) {  
  2.  div#wrapper {  
  3.   width: 400px;  
  4.  }  
  5.  
  6.  div#header {  
  7.   background-image: url(media-queries-phone.jpg);  
  8.   height: 93px;  
  9.   position: relative;  
  10.  }  
  11.  
  12.  div#header h1 {  
  13.   font-size: 140%;  
  14.  }  
  15.  
  16.  #content {  
  17.   float: none;  
  18.   width: 100%;  
  19.  }  
  20.  
  21.  #navigation {  
  22.   float:none;  
  23.   width: auto;  
  24.  }  
  25. }  
  26. @media only screen and (max-device-width: 480px) {  
  27.  div#wrapper {  
  28.   width: 400px;  
  29.  }  
  30.  
  31.  div#header {  
  32.   background-image: url(media-queries-phone.jpg);  
  33.   height: 93px;  
  34.   position: relative;  
  35.  }  
  36.  
  37.  div#header h1 {  
  38.   font-size: 140%;  
  39.  }  
  40.  
  41.  #content {  
  42.   float: none;  
  43.   width: 100%;  
  44.  }  
  45.  
  46.  #navigation {  
  47.   float:none;  
  48.   width: auto;  
  49.  }  

最終,我們?cè)谛∑聊辉O(shè)備上得到了如下顯示效果:

顯示效果

#p#

使用Media Queries鏈接單獨(dú)的CSS文件

對(duì)于小型的改動(dòng),直接在 CSS 代碼中插入移動(dòng)設(shè)備代碼分支是很方便的,但對(duì)于大型站點(diǎn),可以使用 Media Queries 鏈接獨(dú)立的式樣表文件,以便在獨(dú)立的式樣表文件中完全自由地為小設(shè)備編寫(xiě) CSS 代碼,方法如下:

  1. <link rel="stylesheet" type="text/css" media="only screen and (max-device-width: 480px)" href="small-device.css"  /> 
  2. <link rel="stylesheet" type="text/css" media="only screen and (max-device-width: 480px)" href="small-device.css"  /> 

測(cè)試Media Queries

要在不同設(shè)備上測(cè)試Media Queries并非易事,你要有各種設(shè)備,還要將代碼上傳到某個(gè)主機(jī)進(jìn)行訪問(wèn)測(cè)試。這里有一個(gè)在線服務(wù),ProtoFluid, 該服務(wù)允許你提供你要測(cè)試的網(wǎng)站的URL,或者你本機(jī)上的URL,然后,模擬iPhone等移動(dòng)設(shè)備顯示你的設(shè)計(jì),下圖是上文中提到的dConstruct網(wǎng)站在ProtoFluid的iPhone模擬中顯示的樣子。你也可以填寫(xiě)你自己的窗口尺寸,來(lái)模擬特定的設(shè)備。

測(cè)試Media Queries

在ProtoFluid使用Media Queries,你需要同時(shí)加上max-width和max-device-width屬性,這意味著,Media Queires 不僅可以針對(duì)不同的移動(dòng)設(shè)備,還可以針對(duì)桌面系統(tǒng)中某些人為的小窗口情形。

  1. @media only screen and (max-width: 480px), only screen and (max-device-width: 480px) {  
  2.  
  3. }  
  4. @media only screen and (max-width: 480px), only screen and (max-device-width: 480px) {  
  5.  
  6. }  

使用上面的代碼,在桌面瀏覽器上,當(dāng)你改變窗口尺寸到達(dá)480像素的時(shí)候,就會(huì)看到布局的改變。需要注意的是,上面的max-width部分僅僅為了測(cè)試,如果你不希望用戶在桌面瀏覽器中因?yàn)楦淖兞舜翱诖笮《鴮?dǎo)致你的布局改變,可以去掉max-width部分,而只針對(duì)那些移動(dòng)設(shè)備。

對(duì)現(xiàn)有網(wǎng)站的整改

上面的例子為了說(shuō)明問(wèn)題起見(jiàn)都很簡(jiǎn)單,現(xiàn)實(shí)中的站點(diǎn)不可能這樣,下面的例子,作者將使用他自己的公司網(wǎng)站,說(shuō)明如何使用 Media Queries 對(duì)現(xiàn)有網(wǎng)站進(jìn)行移動(dòng)化整改。

桌面布局

桌面布局

作者自己的網(wǎng)站是幾年前設(shè)計(jì)的,那是還沒(méi)有考慮 Media Queries 問(wèn)題,這是一個(gè)三欄式布局。

增加新的式樣表

為了適應(yīng)移動(dòng)設(shè)備,將使用Media Queries加載獨(dú)立的式樣表:

  1. <link   
  2. rel="stylesheet"   
  3. type="text/css"   
  4. media="only screen and (max-width: 480px), only screen and (max-device-width: 480px)"   
  5. href="/assets/css/small-device.css"   
  6. /> 
  7. <link   
  8. rel="stylesheet"   
  9. type="text/css"   
  10. media="only screen and (max-width: 480px), only screen and (max-device-width: 480px)"   
  11. href="/assets/css/small-device.css"   
  12. /> 

作者的做法是,將他站點(diǎn)中原來(lái)的CSS文件另存為small-device.css ,在這個(gè)基礎(chǔ)上針對(duì)移動(dòng)設(shè)備進(jìn)行整改。

#p#

壓縮Header部分

***步是讓Logo部分能在小屏幕上顯示,因?yàn)檫@個(gè)Logo是基于背景圖片的,因此很好辦,同時(shí),提供一個(gè)小尺寸的背景圖,以便和Logo搭配。

  1. body {  
  2.  background-image: url(/img/small-bg.png);  
  3. }  
  4.  
  5. #wrapper {  
  6.  width: auto;  
  7.  margin: auto;  
  8.  text-align: left;  
  9.  background-image: url(/img/small-logo.png);  
  10.  background-position: left 5px;  
  11.  background-repeat: no-repeat;  
  12.  min-height: 400px;  
  13. }  
  14. body {  
  15.  background-image: url(/img/small-bg.png);  
  16. }  
  17.  
  18. #wrapper {  
  19.  width: auto;  
  20.  margin: auto;  
  21.  text-align: left;  
  22.  background-image: url(/img/small-logo.png);  
  23.  background-position: left 5px;  
  24.  background-repeat: no-repeat;  
  25.  min-height: 400px;  

單列式布局

下一步主要的工作是將多欄式布局換成單欄式,桌面版使用Float實(shí)現(xiàn)多欄布局,要改成單欄,只需將float設(shè)置為float:none,并將width設(shè)置為width:auto,這樣,就實(shí)現(xiàn)了單列式布局。

  1. .article #aside {  
  2.  float: none;  
  3.  width: auto;  
  4. }  
  5. .article #aside {  
  6.  float: none;  
  7.  width: auto;  

再緊湊一些

再緊湊一些

然后,將margin和padding進(jìn)行調(diào)整,使之更緊湊一些:

在iPhone中測(cè)試

在iPhone中實(shí)際測(cè)試的時(shí)候,發(fā)現(xiàn)網(wǎng)站在單列式布局中仍然向外延伸了,從 Safari developer website 找到解決辦法,在網(wǎng)站頭,添加一個(gè) meta tag,將網(wǎng)站的視窗寬度設(shè)置成何設(shè)備一致。

在iPhone中測(cè)試

 

  1. <meta name="viewport" content="width=device-width"  /> 
  2. <meta name="viewport" content="width=device-width"  /> 

 

【編輯推薦】

  1. AndroidWidget開(kāi)發(fā)詳解
  2. 一步一步揭開(kāi)Android應(yīng)用程序的神秘面紗
  3. Novell推出支持iPhone的.NET和C#開(kāi)發(fā)工具 
責(zé)任編輯:王曉東 來(lái)源: cnbeta
相關(guān)推薦

2012-01-12 11:05:05

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

2013-03-06 10:03:25

Open WebHTML5CSS3

2023-04-14 16:45:21

CSS前端CSS3

2010-03-22 08:56:12

2013-09-24 13:56:25

jQueryCSS

2012-09-13 09:24:31

CSSJSjQ

2024-04-28 08:31:47

CSS3Clamp()函數(shù)響應(yīng)式設(shè)計(jì)工具

2015-10-09 09:43:28

CSS CSS3

2013-03-04 14:13:13

HTML5CSS3響應(yīng)式

2013-01-30 15:59:29

adobeCSS3HTML5

2012-05-25 10:31:44

HTML5

2012-05-30 09:22:56

Hybrid App助HTML5JavaScript

2011-11-25 13:18:40

HTML 5

2013-09-09 14:38:23

2012-05-31 09:14:58

Rexsee

2022-10-11 23:26:54

css3attr函數(shù)

2024-05-31 00:00:01

2011-05-04 13:15:22

BlackBerry BlackBerry

2011-05-11 16:13:43

CSS3

2011-03-22 08:54:02

HTML 5CSS3JavaScript
點(diǎn)贊
收藏

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