CSS 媒體查詢 - 實例

CSS 媒體查詢 - 更多實例

讓我們看看使用媒體查詢的更多例子。

媒體查詢是一種流行的技術,用于將定制的樣式表傳遞給不同的設備。

下面演示一個簡單的例子,讓我們來更改不同設備的背景色:

CSS 媒體查詢

實例

/* 將 body 的背景色設置為棕褐色 */
body {
  background-color: tan;
}
/* 在小于或等于 992 像素的屏幕上,將背景色設置為藍色 */
@media screen and (max-width: 992px) {
  body {
    background-color: blue;
  }
}
/* 在 600 像素或更小的屏幕上,將背景色設置為橄欖色 */
@media screen and (max-width: 600px) {
  body {
    background-color: olive;
  }
}

親自試一試

您想知道我們為什么要精確使用 992px 和 600px 嗎?它們就是我們所稱的設備的“典型斷點”(typical breakpoints)。您可以在我們的 響應式 Web 設計教程 中學習有關典型斷點的更多知識。

菜單的媒體查詢

在本例中,我們使用媒體查詢來創建響應式導航菜單,該菜單在不同的屏幕尺寸上會有所不同。

大型屏幕:

小型屏幕:

實例

/* navbar 容器 */
.topnav {
  overflow: hidden;
  background-color: #333;
}
/* Navbar 鏈接 */
.topnav a {
  float: left;
  display: block;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}
/* 在寬度為 600 像素或更小的屏幕上,使菜單鏈接彼此堆疊,而不是并排 */
@media screen and (max-width: 600px) {
  .topnav a {
    float: none;
    width: 100%;
  }
}

親自試一試

列的媒體查詢

媒體查詢的常見用法是創建彈性布局。在本例中,我們創建了一個布局,該布局在四列、兩列和全寬列之間變化,具體取決于不同的屏幕尺寸:

大型屏幕:

中等屏幕:

小型屏幕:

實例

/* 創建彼此相鄰浮動的四個相等的列 */
.column {
  float: left;
  width: 25%;
}
/* 在 992p x或更小的屏幕上,從四列變為兩列 */
@media screen and (max-width: 992px) {
  .column {
    width: 50%;
  }
}
/* 在寬度小于或等于 600 像素的屏幕上,使各列堆疊,而不是并排 */
@media screen and (max-width: 600px) {
  .column {
    width: 100%;
  }
}

親自試一試

提示:更現代的創建列布局方法是使用 CSS Flexbox(請參見下面的例子)。但是,Internet Explorer 10 以及更早版本不支持它。如果需要 IE6-10 的支持,請使用浮動(如上所示)。

如需學習有關彈性框布局模塊的更多知識,請學習 CSS Flexbox 這一章。

如需學習有關響應式 Web 設計的更多知識,請學習我們的 響應式 Web 設計教程

實例

/* 彈性盒的容器 */
.row {
  display: flex;
  flex-wrap: wrap;
}
/* 創建四個相等的列 */
.column {
  flex: 25%;
  padding: 20px;
}
/* 在 992px 或更小的屏幕上,從四列變為兩列 */
@media screen and (max-width: 992px) {
  .column {
    flex: 50%;
  }
}
/* 在寬度小于或等于 600 像素的屏幕上,使各列堆疊,而不是并排 */
@media screen and (max-width: 600px) {
  .row {
    flex-direction: column;
  }
}

親自試一試

用媒體查詢隱藏元素

媒體查詢的另一種常見用法是在不同屏幕尺寸上隱藏元素:

在小屏幕上我會隱藏。

實例

/* 如果屏幕尺寸為600像素或更小,請隱藏該元素 */
@media screen and (max-width: 600px) {
  div.example {
    display: none;
  }
}

親自試一試

用媒體查詢改變字體

您還可以使用媒體查詢來更改不同屏幕尺寸上的元素的字體大小:

可變的字體大小。

實例

/* 如果屏幕尺寸超過 600 像素,把 <div> 的字體大小設置為 80 像素 */
@media screen and (min-width: 600px) {
  div.example {
    font-size: 80px;
  }
}
/* 如果屏幕大小為 600px 或更小,把 <div> 的字體大小設置為 30px */
@media screen and (max-width: 600px) {
  div.example {
    font-size: 30px;
  }
}

親自試一試

彈性圖片庫

在此例中,我們將媒體查詢與 flexbox 一起使用來創建響應式圖片庫:

實例

親自試一試

彈性網站

在本例中,我們將媒體查詢與 flexbox 一起使用,以創建響應式網站,其中包含彈性導航欄和彈性內容。

實例

親自試一試

方向:人像 / 風景

媒體查詢還可以用于根據瀏覽器的方向更改頁面的布局。

您可以設置一組 CSS 屬性,這些屬性僅在瀏覽器窗口的寬度大于其高度時才適用,即所謂的橫屏:

實例

如果方向處于橫向模式,則使用淺藍背景色:

@media only screen and (orientation: landscape) {
  body {
    background-color: lightblue;
  }
}

親自試一試

最小寬度到最大寬度

您還可以使用 max-width 和 min-width 屬性設置最小寬度和最大寬度。

例如,當瀏覽器的寬度在 600 到 900 像素之間時,更改 <div> 元素的外觀:

實例

@media screen and (max-width: 900px) and (min-width: 600px) {
  div.example {
    font-size: 50px;
    padding: 50px;
    border: 8px solid black;
    background: yellow;
  }
}

親自試一試

使用附加值:在下面的例子中,我們使用逗號(類似 OR 運算符)將附加的媒體查詢添加到已有媒體查詢中:

實例

/* 當寬度在 600 像素到 900 像素之間或大于 1100 像素時 - 更改 <div> 的外觀 */
@media screen and (max-width: 900px) and (min-width: 600px), (min-width: 1100px) {
  div.example {
    font-size: 50px;
    padding: 50px;
    border: 8px solid black;
    background: yellow;
  }
}

親自試一試

CSS @media 參考手冊

有關所有媒體類型和特性/表達式的完整概述,請查看 CSS 參考中的 @media 規則

提示:如需學習有關響應式 Web 設計(如何針對不同的設備和屏幕)的更多知識,以及使用媒體查詢斷點,請閱讀我們的 響應式 Web 設計教程