使用媒体查询实现响应式布局

259 阅读2分钟

一、响应式布局的概念:

利用媒体技术,让页面在不同的屏幕上采用不同的样式,从而让页面能够兼容多种终端设备,比如:pc端、手机端、ipad等。

二、媒体查询的语法

@media 媒体类型 查询逻辑(媒体特性:断点){

    /*具体样式*/

}

1、媒体类型:

作用:设置样式在什么样的设备下生效

种类:

screen :屏幕设备(最常使用值)

all : 所有设备(默认值)

pint : 打印设备

speech : 屏幕阅读器,一般供残障人士使用

示例:

 @media screen ...{

    /* 具体样式 */

 }

 @media all(all可以省略) ...{

    /* 具体样式 */

 }

 @media pint  ...{

    /* 具体样式 */

 }

 @media speech  ...{

    /* 具体样式 */

 }

2、逻辑查询

作用: 连接查询条件,设置各个条件之间的逻辑关系

常用值:与(and) \ 或(,)\非(not)

含义:

与(and): 查询条件全部为真时生效。

或(,):查询条件中的任意一个为真时生效

非(not): 对查询条件取反。

示例:

1)与(and)

@media screen and (min-width: 320px){

     body{

       background: red;

     }

}

含义:

当设备是“屏幕设备”,并且屏幕宽度>=320px时,应用样式:

1.png

注意事项:

如果只有一个条件,则不能写and,如下写法为错误写法:

@media and (min-width: 320px){

    body{

      background: red;

    }

}

正确写法为:

@media (min-width: 320px){  //要将and删除

     body{

       background: red;

     }

}

多个条件之间,可以用and连接,参考如下:

/* 当设备是“屏幕设备”,并且宽度>=320px 且 <=375px 时,应该样式*/

@media screen and  (min-width: 320px) and (max-width:375){

    body{

      background: red;

    }

}

2)或(,)

@media screen and  (min-width: 1200px) , screen and (max-width:320px){

     body{

       background: red;

     }

}

含义:当设备是屏幕设备并且宽度>=1200px或者设备是屏幕设备并且宽度<=320px时,应用样式:

2.png

注意事项:

逗号‘,’前后的条件,如果媒体类型是all可以省略,如下两种写法等价:

3.png

3)非(not):

当not 和and 一起出现时,并且没有其他查询逻辑,则not是对整个条件取反:

@media not screen and (min-width:320px) and (max-width:375px){

    body{

      background: red;

    }

}

含义:

当设备不是‘宽度大于等于320且小于等于375的屏幕设备’时,应用样式:

00.png

当条件之间使用了“或”时,not修饰哪个条件,就是只对该条件取反,如下:

4.png

3、媒体特性:

作用:设置媒体查询的条件

常用值示例:

width 宽度

@media screen and (width :  ...){


}

min-width 最小宽度

@media screen and (min-width :  ...){


}

max-width 最大宽度

@media screen and (max-width :  ...){


}

-webkit-device-pixel-ratio:设备像素比

-webkit-max-device-pixel-ratio:最大设备像素比

-webkit-min-device-pixel-ratio:最小设备像素比

  可以通过window.devicePixelRatio获取dpr

orientation   屏幕方向

@media screen and (orientation:landscape){

   //横屏下的样式

}

@media screen and (orientation:portrait){

   //竖屏下的样式

}

4、断点

作用:设置样式改变时的临界值(交界点)

@media screen and (width:断点){


}

如何确定断点:

根据经验总结出的常见断点

  xs <576px超小屏

  sm 576px-768px 小屏

  md 768px~992px 中屏

  lg 992px~1200px 大屏

  xl >=1200px超大屏

改变屏幕大小,当页面显示不正常(或不符合要求)时,将当前宽度设置成断点

四、媒体查询的书写位置

1、写在style标签中(推荐写法)

5.png

2、写在单独的css中(推荐)

6.png

3、将媒体查询设置在link标签上(不推荐)

01.png

五、媒体查询的策略

1、无策略

根据断点写媒体查询,每一个媒体查询可以使用max-width、min-width,将样式限定在特定的宽度内即可。

7.png

2、pc端优先

先考虑大屏,再考虑小屏,只需要使用max-width即可

8.png

3、移动端优先

先考虑最小屏,再考虑大屏,只需要使用min-width即可

9.png

那就先总结到这里吧~

今日寄语:

你唯一应该超越的人,是昨天的自己。