CSS:使用CSS媒體查詢創建響應式布局


  現如今在Web前端領域,BootStrap是一個最流行的UI庫,其12列的柵欄系統為響應式布局提供了一種對程序員來說很好操作的模式。

  追究Bootstrap的內在原理,其實就是通過媒體查詢來完成對不同屏幕大小、不同分辨率、不同設備導致的不同場景下的Css樣式的選擇。今天我就對媒體查詢這一工具或者說方法來進行一個總結。

  從 CSS 版本 2 開始,就可以通過媒體類型在 CSS 中獲得媒體支持。

  1、如何使用媒體查詢:

<link rel="stylesheet" type="text/css" href="site.css" media="screen" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />

  以上的兩句引入Css樣式表的語句,比一般的Css引入語句就多了一個關鍵字“media”,media 屬性定義了應該用於指定每種媒體類型的樣式表:

  • screen 適用於計算機彩色屏幕。
  • print 適用於打印預覽模式下查看的內容或者打印機打印的內容。

  *這里是將media屬性放在了Css引入的語句中,所以在以下查詢語句中就可以省略screen或者print。

  2、一般的媒體查詢語法:

@media “media type” condition {/*CSS樣式表*/}

  其中“@media”也可以有另一中寫法,“media=”;

  “media type”是應用媒體查詢的媒體類型,例如“all”,意思是所有媒體都使用接下來的css樣式表;或者“(min-width:800px)”,意思是屏幕最小寬度為800px時使用接下來的CSS樣式表,如果屏幕寬度大於800px則不會應用此CSS。

  也就是說,媒體查詢包含一個媒體類型,后跟一個或多個檢查特定條件(如最小的屏幕寬度)的表達式。通過評估條件的真假,如果改條件為true則應用Css,否則不應用。

  由此我們可以擴展出很多的媒體查詢類型。

  3、在Css的媒體查詢中,可以使用三種邏輯運算,也即“and”,“or”,“not”,意思我當然不用解釋。舉幾個例子一眼就明白了:

/*在將某個媒體查詢應用於所有媒體類型時,會省略 all*/
@media (min-width:800px) { ... }
/*寬度在800~1200px之間時激活*/
@media (min-width:800px) and (max-width:1200px) { ... }
/*可以使用多個and運算符,這里添加了第三個判斷方向為縱向*/
@media (min-width:800px) and (max-width:1200px) and (orientation:portrait) { ... }
/*寬度為800px或者方向為縱向時激活*/
@media (min-width:800px) or (orientation:portrait) { ... }
/*寬度不是800px時激活*/
@media (not min-width:800px) { ... }

  4、寬度和高度非常相似,所以二者的條件可以在一起使用:

@media (min-width:800px) and (min-height:400px) { ... }

  orientation查詢:

@media (orientation:portrait) { ... }

  不帶max-或min-的查詢,當然這種查詢的的可用性不是很大:

@media (width:800px) and (height:400px) { ... }

  5、常見媒體查詢

  因為 Apple 首次向市場推出了用戶智能手機和平板電腦產品,所以下列大多數媒體查詢都是基於這些型號的設備。

  如果目標是橫向模式智能手機,則使用: @media (min-width: 321px) { ... }

  如果目標是縱向模式智能手機,則使用: @media (max-width: 320px) { ... }

  如果目標是橫向模式 Apple iPad,則使用: @media (orientation: landscape) { ... }

  如果目標是縱向模式 iPad,則使用: @media (orientation: portrait) { ... }

  您可能已經注意到了,iPad 上使用的是 orientation 媒體特性,而 width 用於 Apple iPhone 之上。主要是因為 iPhone 不支持orientation 媒體特性。您必須使用 width 模擬這些方向斷點。

  6、嵌套的媒體查詢:

#header {
  width: 400px;
  @media (min-width: 800px) {
    width: 100%;
  }
}

  以上代碼編譯后為以下的結果:

#header {
  width: 400px;
}
@media (min-width: 800px) {
  #header {
    width: 100%;
  }
}

  以上以寬度為例來對媒體查詢進行一個小結, 管中窺豹,可見一斑。width和height只是兩種可以用媒體查詢來進行控制的屬性,還有顏色(color)、顏色索引(integer)、寬高比(ratio)等屬性都是也可以使用的。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM