最新的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;
    }
}
试一试»