写点什么

网站开发进阶(六十八)CSS3 媒体查询 @media

  • 2022 年 5 月 17 日
  • 本文字数:3364 字

    阅读完需:约 11 分钟

网站开发进阶(六十八)CSS3媒体查询@media

一、前言

媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成。媒体查询中可用于检测的媒体特性有:widthheightcolor(等)。使用媒体查询可以在不改变页面内容的情况下,为特性的一些输出设备定制显示效果。

二、媒体查询语法

CSS3 中的媒体查询:根据浏览器窗口大小的改变,页面颜色就会改变。


CSS3 语法


@media mediatype and|not|only (media feature) {    CSS-Code;}
复制代码


CSS2 语法


CSS2media:通过<link>标签的media属性为样式表指定设备类型:


<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">
复制代码




三、应用示例

CSS中,@media规则可置于代码的顶层或位于其它任何 @条件规则组内。


媒体查询包含一个可选的媒体类型和媒体特性表达式(0 或多个)最终会被解析为truefalse。如果媒体查询中指定的媒体类型匹配展示文档所使用的设备类型,并且所有的表达式的值都是true,那么该媒体查询结果为true


<!DOCTYPE html><html>  <head>      <meta name="viewport" content="width=device-width,initial-scale=1.0">    <title>无标题文档</title>  </head><style>  @media (max-width:5000px)  {      body{          margin:0 auto;          width:1000Px;      }      .left{          float:left;          width:450px;          height:1200px;          margin-left:25px;          margin-right:25px;          background-color:#99FFCC;      }      .right{          float:right;          width:450px;          height:1200px;          margin-left:25px;          margin-right:25px;          background-color:#FFFF99;      }      .rtop{          width:450px;          height:150px;          background-color:#CCFFFF;          padding:0;          position:absolute;          left:auto;          top:250px;          font-size:14px;          line-height:21px;          text-align:center;          overflow:hidden;      }         .rcenter{          width:450px;          height:150px;          background-color:#CCFFFF;          position:absolute;ss          left:auto;          top:650px;          text-align:center;          overflow:hidden;      }      .rbottom{          width:450px;          height:150px;          background-color:#CCFFFF;          padding:0;          position:absolute;          left:auto;          top:1050px;          font-size:20px;          line-height:30px;          text-align:center;          overflow:hidden;      }  }    @media screen and(min-width:750px) and (max-width:1000px)  {      body{          margin:0 auto;          width:750Px;      }      .left{              float:left;          width:350px;          height:900px;          margin-right:25px;          background-color:#99FFCC;      }      .right{          float:right;          width:350px;          height:900px;          margin-left:25px;          background-color:#FFFF99;      }      .rtop{          width:350px;          height:100px;          background-color:#CCFFFF;          padding:0;          position:absolute;          left:auto;          top:200px;          font-size:14px;          line-height:21px;          text-align:center;          overflow:hidden;      }      .rcenter{          width:350px;          height:100px;          background-color:#CCFFFF;          position:absolute;          left:auto;          top:500px;          text-align:center;          overflow:hidden;      }      .rbottom{          width:350px;          height:100px;          background-color:#CCFFFF;          position:absolute;          left:auto;          top:800px;          font-size:20px;          line-height:30px;          text-align:center;          overflow:hidden;      }  }    @media screen and (min-width: 320px) and (max-width: 750px)  {      body{          margin:0 auto;          width:320Px;      }      .left{          margin:0 auto;          width:320px;          height:300px;          background-color:#99FFCC;      }      .right{          margin:0 auto;          width:320px;          height:900px;          background-color:#FFFF99;      }      .rtop{          width:320px;          height:100px;          background-color:#CCFFFF;          padding:0;          position:absolute;          left:auto;          top:500px;          font-size:14px;          line-height:21px;          text-align:center;          overflow:hidden;      }      .rcenter{          width:320px;          height:100px;          background-color:#CCFFFF;          position:absolute;          left:auto;          top:800px;          text-align:center;          overflow:hidden;      }         .rbottom{          width:320px;          height:100px;          background-color:#CCFFFF;          position:absolute;          left:auto;          top:1100px;          font-size:20px;          line-height:30px;          text-align:center;          overflow:hidden;      }  }</style><body>    <div class="left"></div>    <div class="right">        <div class="rtop">          <p>这是第一段文字这是第一段文字这是第一段文字          这是第一段文字这是第一段文字这是第一段文字          这是第一段文字这是第一段文字这是第一段文字          这是第一段文字这是第一段文字这是第一段文字</p>        </div>                <div class="rcenter">          <p>这是第二段文字这是第二段文字这是第二段文字          这是第二段文字这是第二段文字这是第二段文字          这是第二段文字这是第二段文字这是第二段文字          这是第二段文字这是第二段文字这是第二段文字</p>        </div>                <div class="rbottom">          <p>这是第三段文字这是第三段文字这是第三段文字          这是第三段文字这是第三段文字这是第三段文字          这是第三段文字这是第三段文字这是第三段文字          这是第三段文字这是第三段文字这是第三段文字</p>        </div>    </div></body></html>
复制代码

四、浏览器兼容性

五、拓展阅读

HSLCSS3引进的一种将 RGB 色彩模型中的点在坐标系中的表示法。这两种表示法试图做到比基于笛卡尔坐标系的几何结构 RGB 更加直观。


5.1 定义与用法

hsl() 函数使用色相饱和度亮度来定义颜色。


HSL 即色相饱和度亮度(英语:Hue, Saturation, Lightness)。


  • 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。

  • 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取值 0-100%

  • 亮度(L),取值 0-100%,增加亮度,颜色会向白色变化;减少亮度,颜色会向黑色变化。

5.2 CSS 语法

hsl(hue, saturation, lightness)
复制代码


5.3 实例

定义 HSL 颜色:


#p1 {background-color:hsl(120,100%,50%);} /* 绿色 */#p2 {background-color:hsl(120,100%,75%);} /* 浅绿  */#p3 {background-color:hsl(120,100%,25%);} /* 暗绿  */#p4 {background-color:hsl(120,60%,70%);} /* 柔和的绿色 */
复制代码

5.4 浏览器支持

表格中的数字表示支持该函数的第一个浏览器版本号。


5.5 hsla()

css中存在两种设置颜色值的方式:hsl()hsla(),它们基本上都是采用了HSL色彩模式的方法来设置颜色,接下来就来看看什么是 HSLA 色彩模式


HSLA是在HSL的基础上增加了一个透明度(A)的设置,取值 0~1 之间。



发布于: 刚刚阅读数: 3
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
网站开发进阶(六十八)CSS3媒体查询@media_5月月更_No Silver Bullet_InfoQ写作社区