最新的Web開發教程
 

自適應網頁設計 - 媒體查詢


什麼是媒體查詢?

媒體查詢是CSS3推出的CSS技術。

它使用@media規則,包括CSS屬性塊只有在一定的條件為真。

如果該瀏覽器窗口比500px的越小,背景顏色將改變為lightblue:

@media only screen and (max-width: 500px) {
    body {
        background-color: lightblue;
    }
}
試一試»

添加一個斷點

在本教程前面我們曾與行和列的網頁,這是有求必應,但它並沒有好看的小屏幕上。

媒體查詢可以與幫助。 我們可以添加一個斷點如果設計的某些部分會表現不同的斷點的兩側。


桌面

電話

使用媒體查詢到768px添加一個斷點:

當屏幕(瀏覽器窗口)變得比768px小,每列應具有100%的寬度:

/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}

@media only screen and (max-width: 768px) {
    /* For mobile phones: */
    [class*="col-"] {
        width: 100%;
    }
}
試一試»

始終設計移動第一

移動第一裝置,用於台式機或任何其他設備設計(這將使在更小的設備頁面顯示速度更快)之前設計的移動。

這意味著我們必須在我們的CSS一些變化。

相反,款式多變當寬度變得小於 768px,當寬度變得比768px ,我們應該改變設計。 這將使我們的設計手機第一:

/* For mobile phones: */
[class*="col-"] {
    width: 100%;
}
@media only screen and (min-width: 768px) {
    /* For desktop: */
    .col-1 {width: 8.33%;}
    .col-2 {width: 16.66%;}
    .col-3 {width: 25%;}
    .col-4 {width: 33.33%;}
    .col-5 {width: 41.66%;}
    .col-6 {width: 50%;}
    .col-7 {width: 58.33%;}
    .col-8 {width: 66.66%;}
    .col-9 {width: 75%;}
    .col-10 {width: 83.33%;}
    .col-11 {width: 91.66%;}
    .col-12 {width: 100%;}
}
試一試»

另一個斷點

只要你喜歡,你可以添加盡可能多的斷點。

我們也將插入平板電腦和手機之間的斷點。


桌面

片劑

電話

我們通過增加一個媒體查詢(在600像素),以及比600px的(但小於768px)放大設備的一組新的類做:

需要注意的是兩組類幾乎是相同的,唯一的區別是名稱( col-col-m- ):

/* For mobile phones: */
[class*="col-"] {
    width: 100%;
}
@media only screen and (min-width: 600px) {
    /* For tablets: */
    .col-m-1 {width: 8.33%;}
    .col-m-2 {width: 16.66%;}
    .col-m-3 {width: 25%;}
    .col-m-4 {width: 33.33%;}
    .col-m-5 {width: 41.66%;}
    .col-m-6 {width: 50%;}
    .col-m-7 {width: 58.33%;}
    .col-m-8 {width: 66.66%;}
    .col-m-9 {width: 75%;}
    .col-m-10 {width: 83.33%;}
    .col-m-11 {width: 91.66%;}
    .col-m-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
    /* For desktop: */
    .col-1 {width: 8.33%;}
    .col-2 {width: 16.66%;}
    .col-3 {width: 25%;}
    .col-4 {width: 33.33%;}
    .col-5 {width: 41.66%;}
    .col-6 {width: 50%;}
    .col-7 {width: 58.33%;}
    .col-8 {width: 66.66%;}
    .col-9 {width: 75%;}
    .col-10 {width: 83.33%;}
    .col-11 {width: 91.66%;}
    .col-12 {width: 100%;}
}
試一試»

這聽起來很奇怪,我們有兩套相同的類,但它給我們在HTML中的機會,決定將與每個斷點列發生的事情:

HTML示例

對於桌面:

在第一和第三部分都將跨越每3列。 本節中段將跨越6列。

片劑:

第一部分將跨越3列,第二將跨越9,和第三部分將被顯示的第一個兩部分的下方,並且它將跨越12列:

<div class="row">
<div class="col-3 col-m-3">...</div>
<div class="col-6 col-m-9">...</div>
<div class="col-3 col-m-12">...</div>
</div>

方向:縱向/橫向

媒體查詢也可以被用來改變根據瀏覽器的取向的頁面的佈局。

你可以有一組CSS屬性時,瀏覽器窗口比它的高度,所謂的“風景”的方向更廣泛的,將只適用:

該網頁將有一個lightblue背景如果方向為橫向模式:

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