CSS详解——多媒体查询

179 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

前言

不同分辨率下网页宽高往往不一样,所以我们一般将网页做成响应式,比如用百分比表示宽高,或者vw、vh单位表示宽高。我们还可以利用多媒体查询进行响应式设计。

定义

多媒体查询在CSS3中用@media表示,它能够检测当前设备屏幕的信息,比如电脑分辨率,手机朝向等。我们可以通过利用这个属性在不同的屏幕下设置不同的样式。具体语法为:

  • @media 语法 媒体类型加上(表达式){css语法}

@media会根据表达式查询,当满足设备跟表达式的时候会返回true,就会执行CSS代码,否则为false。

语法

@media可以指定媒体类型,对应的值有以下几种:

  • screen:屏幕,如手机屏幕。
  • speech:阅读器。
  • print:打印机。
  • all:全部生效。

还有几个关键字:

  • and:连接多个查询条件。

  • not:not+媒体类型,排除该媒体类型。

  • only:only+媒体类型,只在指定媒体类型上面生效。

指定好设备我们利用and拼接多个查询条件,达到我们想要的效果,条件表达式都是媒体特性,也就是CSS属性,比如widht、height、color等。还有一些设备属性,如:

  • light-level:设备的光水平。
  • orientation:设备的屏幕方法。
  • min/max-resolution:设备的最小/最大分辨率。
  • aspect-ratio:设备的宽高比。

用法

我们可以在CSS文件中直接利用上面的@media语法运用,也可以利用link的media属性设置:

   <!-- 在屏幕宽度大于、等于300px是a.css样式生效 -->
    <link rel="stylesheet" media="screen and (min-width:300px)" href="./a.css">
    /* 屏幕宽度小于、等于800px字体颜色为红色,背景色为橙色 */
      @media screen and (min-width:800px) {
        body{
          color: red;
          background: orange;
        }  
      }

在link中直接用media即可,我们还可以利用','逗号将多个多媒体规则合并起来。

   @media screen and (max-width: 500px),screen and (min-width:800px)     {
      body {
        color: red;
        background: orange;
      }
    }

_Z6Y~_7C%H)}(PH8WCFBAOB.png

总结

以上就是多媒体查询@media,我们可以用该属性做响应式页面,当表达式全部为true时,对应样式就会生效。