CSS3:多媒体查询 Media Queries
@media可以针对不同的媒体类型(包括显示器、便携设备、电视机,等等)设置不同的样式规则,实现适应显示。媒体查询可用于检测很多事情,例如:
-
viewport(视窗) 的宽度与高度
-
设备的宽度与高度
-
-
分辨率
目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。
(1)多媒体查询语法
多媒体查询由多种媒体组成,可以包含一个或多个表达式,表达式根据条件是否成立返回 true 或 false。
@media not|only mediatype and (expressions) { CSS 代码...; } @media only speech and (min-width: 500px){ CSS 代码...; }
如果指定的多媒体类型匹配设备类型则查询结果返回 true,文档会在匹配的设备上显示指定样式效果。
除非你使用了 not 或 only 操作符,否则所有的样式会适应在所有设备上显示效果。
-
not: 用来排除掉特定的设备,比如 @media not print(非打印设备)。
-
only: 用 来规定某种特别的媒体类型。 表示只有 仅仅,表示某一种的媒体类型设备。
注意:对于支持Media Queries的移动设备来说,如果存在only关键字,移动设备的Web浏览器会忽略only关键字并直接根据后面的表达式应用样式文件。对于不支持Media Queries的设备但能够读取Media Type类型的Web浏览器,遇到only关键字时会忽略这个样式文件。
-
and: 表示并且,要求必须满足所有的表达式要求时,才能使用media定义样式
(2)CSS3多媒体类型
值 | 描述 |
---|---|
all | 用于所有多媒体类型设备 |
用于打印机 | |
screen | 用于电脑屏幕,平板,智能手机等。 |
speech | 用于屏幕阅读器 |
(3)常用的条件
max-width: 输出设备中页面最大可视区域宽度,小于这个width时,其中的css生效
min-width: 输出设备中页面最小可视区域宽度,大于这个width时,其中的css生效
max-height: 输出设备中页面最大可视区域高度
min-height: 输出设备中页面最小可视区域高度
实例1:当屏幕的可视窗口宽度大于480px时改变背景色。
body { background-color: pink; } 表示 匹配媒体类型为电脑屏幕等在宽度大于480px 并且小于560px时 @media screen and (min-width: 480px) and (max-width: 560px){ body { background-color: lightgreen; } }
实例2:当屏幕的可视窗口宽度大于480px时将菜单浮动到左侧。
<div>
<div id="leftsidebar">
<ul id="menulist">
<li class="menuitem">Menu-item 1</li>
<li class="menuitem">Menu-item 2</li>
<li class="menuitem">Menu-item 3</li>
<li class="menuitem">Menu-item 4</li>
<li class="menuitem">Menu-item 5</li>
</ul>
</div>
<div id="main">
<h1>重置浏览器窗口查看效果!</h1>
<p>在屏幕可视窗口尺寸大于 480 像素时将菜单浮动到页面左侧。</p>
</div>
</div>
#main { margin-left: 4px; } #leftsidebar { float: none; width: auto; } #menulist { margin:0;padding:0; } .menuitem { background:#CDF0F6; border:1px solid #d4d4d4; border-radius:4px; list-style-type:none; margin:4px; padding:2px; } @media screen and (min-width: 480px) { #leftsidebar { width:200px; float:left; } #main { margin-left:216px; } }
(4)媒体查询两种方式
第一种:link的方式:
<link rel="stylesheet" media="screen and (max-width:600px)" href="./css/blue.css">
<link rel="stylesheet" media="screen and (min-width:900px)" href="./css/red.css">
<link rel="stylesheet" media="screen and (min-width:1200px)" href="./css/yellow.css">
<link rel="stylesheet" media="screen and (min-width:600px) and (max-width:900px)" href="./css/green.css">
第二种:css的方式:
<style> @media screen and (max-width:600px) { body { background-color: blue; } } @media screen and (min-width:900px) { body { background-color: red; } } @media screen and (min-width:1200px) { body { background-color: yellow; } /*使用关键词"and"将多个媒体特性结合在一起*/ @media screen and (min-width:600px) and (max-width:900px){ body { background-color:green; } } </style>