详解CSS3 Media Queries中媒体属性的使用


Posted in HTML / CSS onFebruary 29, 2016

媒体属性
大多数媒体属性带有“min-”和“max-”前缀,用于表达“小于等于”和“大于等于”。这避免了使用与HTML和XML冲突的“<”和“>”字符。如果你未向媒体属性指定一个值,并且该特性的实际值不为零,则该表达式被解析为真。

注意:如果浏览器运行的设备上没有该属性值,包含这个属性值的表达式一般返回假。例如,在语音合成器上查询屏幕长宽比总是返回假。
颜色(color)

值: <color>
媒体: visual
是否接受 min/max 前缀:是

指定输出设备每个像素单元的比特值。如果设备不支持输出颜色,则该值为0。

注意:如果每个颜色单元具有不同数量的比特值,则使用最小的。例如,如果显示器为蓝色和红色提供5比特,而为绿色提供6比特,则认为每个颜色单元有5比特。如果设备使用索引颜色,则使用颜色表中颜色单元的最小比特数。
示例

向所有能显示颜色的设备应用样式表:

CSS Code复制内容到剪贴板
  1. @media all and (color) { ... }  

向每个颜色单元至少有4个比特的设备应用样式表:

CSS Code复制内容到剪贴板
  1. @media all and (min-color: 4) { ... }  

颜色索引(color-index)

值:<integer>
媒体: visual
是否接受 min/max 前缀:是

指定了输出设备中颜色查询表中的条目数量。

示例

向所有使用索引颜色的设备应用样式表,你可以这么做:

CSS Code复制内容到剪贴板
  1. @media all and (color-index) { ... }  

向所有使用至少256个索引颜色的设备应用样式表:

CSS Code复制内容到剪贴板
  1. <link rel="stylesheet" media="all and (min-color-index: 256)" href="http://foo.bar.com/stylesheet.css" />  

宽高比(aspect-ratio)

值:<ratio>
媒体: visual, tactile
是否接受 min/max 前缀:是

描述了输出设备目标显示区域的宽高比。该值包含两个以“/”分隔的正整数。代表了水平像素数(第一个值)与垂直像素数(第二个值)的比例。

示例

下面为显示区域宽高至少为一比一的设备选择了一个特殊的样式表。

CSS Code复制内容到剪贴板
  1. @media screen and (min-aspect-ratio: 1/1) { ... }  

这指定了宽高比或者1:1或者更大。换句话说,可视区域或者是正方形或者是宽屏。

设备宽高比(device-aspect-ratio)

值:<ratio>
媒体:visual, tactile
是否接受 min/max 前缀:是

描述了输出设备的宽高比。该值包含两个以“/”分隔的正整数。代表了水平像素数(第一个值)与垂直像素数(第二个值)的比例。

示例

下面为宽屏设备选择了一个特殊的样式表。

CSS Code复制内容到剪贴板
  1. @media screen and (device-aspect-ratio: 16/9), screen and (device-aspect-ratio: 16/10) { ... }  

宽高比或者16:9或者16:10。

设备高度(device-height)

值:<length>
媒体:visual, tactile
是否接受 min/max 前缀:是

描述了输出设备的高度(整个屏幕或页的高度,而不是仅仅像文档窗口一样的渲染区域)。

示例

向显示在最大宽度800px的屏幕上的文档应用样式表,你可以这样做:

CSS Code复制内容到剪贴板
  1. <link rel="stylesheet" media="screen and (max-device-width: 799px)" />  

设备宽度(device-width)

值:<length>
媒体: visual, tactile
是否接受 min/max 前缀:是

描述了输出设备的宽度(整个屏幕或页的高度,而不是仅仅像文档窗口一样的渲染区域)。

网格(grid)

值:<integer>
媒体:all
是否接受 min/max 前缀: 否

判断输出设备是网格设备还是位图设备。如果设备是基于网格的(例如电传打字机终端或只能显示一种字形的电话),该值为1,否则为0。

示例

向一个15字符宽度或更窄的手持设备应用样式:

CSS Code复制内容到剪贴板
  1. @media handheld and (grid) and (max-width: 15em) { ... }  

注意:“em” 在网格设备中有不同的意义;一个“em”的实际宽度不得而知,假设1em相当于一个网格单元的宽高。
高度(height)

值:<length>
媒体:visual, tactile
是否接受 min/max 前缀:是

height 媒体属性描述了输出设备渲染区域(如可视区域的高度或打印机纸盒的高度)的高度。

注意:用户调整窗口大小后,火狐浏览器会根据使用了width和height属性的媒体查询来切换合适的样式表。
黑白(monochrome)

值:<integer>
媒体: visual
是否接受 min/max 前缀:是

指定了一个黑白(灰度)设备每个像素的比特数。如果不是黑白设备,值为0。

示例

向所有黑白设备应用样式表:

CSS Code复制内容到剪贴板
  1. @media all and (monochrome) { ... }  

向每个像素至少8比特的黑白设备应用样式表:

CSS Code复制内容到剪贴板
  1. @media all and (min-monochrome: 8) { ... }  

方向(orientation)

值:landscape | portrait
媒体:visual
是否接受 min/max 前缀:否

指定了设备处于横屏(宽度大于宽度)模式还是竖屏(高度大于宽度)模式。

示例

向竖屏设备应用样式表:

CSS Code复制内容到剪贴板
  1. @media all and (orientation: portrait) { ... }  

分辨率(resolution)

值: <resolution>
媒体: bitmap
是否接受 min/max 前缀:是

指定输出设备的分辨率(像素密度)。分辨率可以用每英寸(dpi)或每厘米(dpcm)的点数来表示。

示例

为每英寸至多300点的打印机应用样式:

CSS Code复制内容到剪贴板
  1. @media print and (min-resolution: 300dpi) { ... }  

替换老旧的 (min-device-pixel-ratio: 2) 语法:

CSS Code复制内容到剪贴板
  1. @media screen and (min-resolution: 2dppx) { ... }  

扫描(scan)

值: progressive | interlace
媒体:tv
是否接受 min/max 前缀:否

描述了电视输出设备的扫描过程。

示例

向以顺序方式扫描的电视机上应用样式表:

CSS Code复制内容到剪贴板
  1. @media tv and (scan: progressive) { ... }  

宽度(width)

值: <length>
媒体: visual, tactile
是否接受 min/max 前缀:是

width 媒体属性描述了输出设备渲染区域(如可视区域的宽度或打印机纸盒的宽度)的宽度。

注意:用户调整窗口大小后,火狐浏览器会根据使用了width和height属性的媒体查询来切换合适的样式表。
示例

如果你想向最小宽度20em的手持设备或屏幕应用样式表,你可以使用这样的查询:

CSS Code复制内容到剪贴板
  1. @media handheld and (min-width: 20em), screen and (min-width: 20em) { ... }  

这个媒体查询将向最小宽度8.5英寸的打印机应用样式表:

CSS Code复制内容到剪贴板
  1. <link rel="stylesheet" media="print and (min-width: 8.5in)"  
  2.     href="http://foo.com/mystyle.css" />  

这个查询适用于宽度在500px和800px之间的屏幕:

CSS Code复制内容到剪贴板
  1. @media screen and (min-width500px) and (max-width800px) { ... }  

实现响应式设计

这个例子可以调整你的浏览器窗口尺寸,我们来具体看一下:
Max Width
下面的样式会在可视区域的宽度小于 600px 的时候被应用。

CSS Code复制内容到剪贴板
  1. @media screen and (max-width600px) {   
  2.   .class {   
  3.     background#ccc;   
  4.   }   
  5. }  

如果你想链接到一个单独的样式表,把下面的代码放在<head>标签里。

CSS Code复制内容到剪贴板
  1. <link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" />  

Min Width
下面的样式会在可视区域的宽度大于 900px 的时候被应用。

CSS Code复制内容到剪贴板
  1. @media screen and (min-width900px) {   
  2.   .class {   
  3.     background#666;   
  4.   }   
  5. }  

Multiple Media Queries
你还可以使用过个匹配条件,下面的样式会在可视区域的宽度在 600px 和 900px 之间的时候被应用。

CSS Code复制内容到剪贴板
  1. @media screen and (min-width600px) and (max-width900px) {   
  2.   .class {   
  3.     background#333;   
  4.   }   
  5. }  

Device Width
下面的样式会在 max-device-width 是 480px 的设备上触发。(提示:max-device-width 是设备的实际分辨率,而 max-width 指的是可视区域分辨率。)

CSS Code复制内容到剪贴板
  1. @media screen and (max-device-width480px) {   
  2.   .class {   
  3.     background#000;   
  4.   }   
  5. }   

For iPhone 4
下面的样式是为 iPhone 4 专门写的 (作者: Thomas Maier)。

CSS Code复制内容到剪贴板
  1. <link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="iphone4.css" />   

For iPad
你还可以使用 media query 在 iPad 上检测方向(portrait or landscapse) 

CSS Code复制内容到剪贴板

  1. <link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">   
  2. <link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">   
HTML / CSS 相关文章推荐
超酷炫 CSS3垂直手风琴菜单
Jun 28 HTML / CSS
用css3制作纸张效果(外翻卷角)
Feb 01 HTML / CSS
使用before和:after伪类制作css3圆形按钮
Apr 08 HTML / CSS
利用CSS3的border-radius绘制太极及爱心图案示例
May 17 HTML / CSS
CSS3 仿微信聊天小气泡实例代码
Apr 05 HTML / CSS
css3遮罩层镂空效果的多种实现方法
May 11 HTML / CSS
2014年圣诞节倒计时网页的制作过程
Dec 05 HTML / CSS
AmazeUI 网格的实现示例
Aug 13 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
Sep 16 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
Feb 06 HTML / CSS
详解CSS不定宽溢出文本适配滚动
May 24 HTML / CSS
HTML中实现音乐或视频自动播放案例详解
May 30 HTML / CSS
CSS3媒体查询Media Queries基础学习教程
Feb 29 #HTML / CSS
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
Feb 27 #HTML / CSS
CSS3中currentColor关键字的妙用
Feb 27 #HTML / CSS
魔幻般冒泡背景的CSS3按钮动画
Feb 27 #HTML / CSS
CSS3 text-shadow实现文字阴影效果
Feb 24 #HTML / CSS
非常震撼的纯CSS3人物行走动画
Feb 24 #HTML / CSS
非常漂亮的CSS3百叶窗焦点图动画
Feb 24 #HTML / CSS
You might like
php class类的用法详细总结
2013/10/17 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
简单谈谈python中的多进程
2016/11/06 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python实现点云投影到平面显示
2020/01/18 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
Python换行与不换行的输出实例
2020/02/19 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
Django ORM filter() 的运用详解
2020/05/14 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
人力资源部培训专员岗位职责
2014/01/02 职场文书
行政部总经理岗位职责
2014/01/04 职场文书
医药个人求职信范文
2014/01/29 职场文书
购房协议书范本
2014/04/11 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python