CSS3 @media 查询
如果文档宽度小于 300 像素则修改背景演示(background-color):
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> body { background-color: lightgreen; } @media screen and (max-width: 300px) { body { background-color: lightblue; } } </style> </head> <body> <p>重置浏览器查看大小。当浏览器窗口的宽度小于 300 像素时,背景颜色会变成淡蓝,否则是淡绿色。<input type="button" onclick="resize_window()" value="查看效果"></p> <script> function resize_window() { window.open('/examples/css3-media-example1/result.html', 'newwindow', 'height=299,width=299,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no') } </script> </body> </html>
定义和使用
使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。
当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
浏览器支持
表格中的数字表示支持 @media 规则的第一个浏览器的版本号。
Rule | |||||
---|---|---|---|---|---|
@media | 21 | 9 | 3.5 | 4.0 | 9 |
CSS 语法
@media mediatype and|not|only (media feature) { CSS-Code; }
你也可以针对不同的媒体使用不同 stylesheets :
<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="/examples/mystylesheet.css">
媒体类型
值 | 描述 |
---|---|
all | 用于所有设备 |
aural | 已废弃。用于语音和声音合成器 |
braille | 已废弃。 应用于盲文触摸式反馈设备 |
embossed | 已废弃。 用于打印的盲人印刷设备 |
handheld | 已废弃。 用于掌上设备或更小的装置,如PDA和小型电话 |
用于打印机和打印预览 | |
projection | 已废弃。 用于投影设备 |
screen | 用于电脑屏幕,平板电脑,智能手机等。 |
speech | 应用于屏幕阅读器等发声设备 |
tty | 已废弃。 用于固定的字符网格,如电报、终端设备和对字符有限制的便携设备 |
tv | 已废弃。 用于电视和网络电视 |
媒体功能
值 | 描述 |
---|---|
aspect-ratio | 定义输出设备中的页面可见区域宽度与高度的比率 |
color | 定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0 |
color-index | 定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0 |
device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的比率。 |
device-height | 定义输出设备的屏幕可见高度。 |
device-width | 定义输出设备的屏幕可见宽度。 |
grid | 用来查询输出设备是否使用栅格或点阵。 |
height | 定义输出设备中的页面可见区域高度。 |
max-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最大比率。 |
max-color | 定义输出设备每一组彩色原件的最大个数。 |
max-color-index | 定义在输出设备的彩色查询表中的最大条目数。 |
max-device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最大比率。 |
max-device-height | 定义输出设备的屏幕可见的最大高度。 |
max-device-width | 定义输出设备的屏幕最大可见宽度。 |
max-height | 定义输出设备中的页面最大可见区域高度。 |
max-monochrome | 定义在一个单色框架缓冲区中每像素包含的最大单色原件个数。 |
max-resolution | 定义设备的最大分辨率。 |
max-width | 定义输出设备中的页面最大可见区域宽度。 |
min-aspect-ratio | 定义输出设备中的页面可见区域宽度与高度的最小比率。 |
min-color | 定义输出设备每一组彩色原件的最小个数。 |
min-color-index | 定义在输出设备的彩色查询表中的最小条目数。 |
min-device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最小比率。 |
min-device-width | 定义输出设备的屏幕最小可见宽度。 |
min-device-height | 定义输出设备的屏幕的最小可见高度。 |
min-height | 定义输出设备中的页面最小可见区域高度。 |
min-monochrome | 定义在一个单色框架缓冲区中每像素包含的最小单色原件个数 |
min-resolution | 定义设备的最小分辨率。 |
min-width | 定义输出设备中的页面最小可见区域宽度。 |
monochrome | 定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0 |
orientation | 定义输出设备中的页面可见区域高度是否大于或等于宽度。 |
resolution | 定义设备的分辨率。如:96dpi, 300dpi, 118dpcm |
scan | 定义电视类设备的扫描工序。 |
width | 定义输出设备中的页面可见区域宽度。 |
更多实例
使用 @media 查询来制作响应式设计:
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <style> body { font-family: "Lucida Sans", Verdana, sans-serif; } .main img { width: 100%; } h1 { font-size: 1.625em; } h2 { font-size: 1.375em; } .header { padding: 1.0121457489878542510121457489879%; background-color: #f1f1f1; border: 1px solid #e9e9e9; } .menuitem { margin: 4.310344827586206896551724137931%; margin-left: 0; margin-top: 0; padding: 4.310344827586206896551724137931%; border-bottom: 1px solid #e9e9e9; cursor: pointer; } .main { padding: 2.0661157024793388429752066115702%; } .right { padding: 4.310344827586206896551724137931%; background-color: #CDF0F6; } .footer { padding: 1.0121457489878542510121457489879%; text-align: center; background-color: #f1f1f1; border: 1px solid #e9e9e9; font-size: 0.625em; } .gridcontainer { width: 100%; } .gridwrapper { overflow: hidden; } .gridbox { margin-bottom: 2.0242914979757085020242914979757%; margin-right: 2.0242914979757085020242914979757%; float: left; } .gridheader { width: 100%; } .gridmenu { width: 23.481781376518218623481781376518%; } .gridmain { width: 48.987854251012145748987854251012%; } .gridright { width: 23.481781376518218623481781376518%; margin-right: 0; } .gridfooter { width: 100%; margin-bottom: 0; } @media only screen and (max-width: 500px) { .gridmenu { width: 100%; } .menuitem { margin: 1.0121457489878542510121457489879%; padding: 1.0121457489878542510121457489879%; } .gridmain { width: 100%; } .main { padding: 1.0121457489878542510121457489879%; } .gridright { width: 100%; } .right { padding: 1.0121457489878542510121457489879%; } .gridbox { margin-right: 0; float: left; } } </style> </head> <body> <div class="gridcontainer"> <div class="gridwrapper"> <div class="gridbox gridheader"> <div class="header"> <h1>The Pulpit Rock</h1> </div> </div> <div class="gridbox gridmenu"> <div class="menuitem">The Drive</div> <div class="menuitem">The Walk</div> <div class="menuitem">The Return</div> <div class="menuitem">The End</div> </div> <div class="gridbox gridmain"> <div class="main"> <h1>The Walk</h1> <p>The walk to the Pulpit Rock will take you approximately two hours, give or take an hour depending on the weather conditions and your physical shape.</p> <img src="/examples/pulpitrock.jpg" alt="Pulpit rock" width="" height=""> </div> </div> <div class="gridbox gridright"> <div class="right"> <h2>What?</h2> <p>The Pulpit Rock is a part of a mountain that looks like a pulpit.</p> <h2>Where?</h2> <p>The Pulpit Rock is in Norway</p> <h2>Price?</h2> <p>The walk is free!</p> </div> </div> <div class="gridbox gridfooter"> <div class="footer"> <p>您可以调整浏览器窗口的大小,来查看不同的内容格式。</p> </div> </div> </div> </div> </body> </html>
相关页面
CSS 教程: CSS 媒体类型