Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码:

复制代码

代码如下:

<link href="css/reset.css" rel="stylesheet" type="text/css" media="screen" />
<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/print.css" rel="stylesheet" type="text/css" media="print" />

或者这样的形式:

复制代码

代码如下:

<style type="text/css" media="screen">
@import url("css/style.css");
</style>

其中两种方式引入CSS样式都有一个共同的属性“media”,而这个“media”就是用来指定特定的媒体类型,在HTML4和CSS2中充许你使用“media”来指定特定的媒体类型,如屏幕(screen)和打印(print)的样式表,当然还有其他的,比如说“TV”,“handheld”等,其中“all”表示的是支持所有媒体介质。有关于更多的Media类型,可以查看http://www.w3.org/TR/CSS2/media.html#media-types。

上面简单说了一下HTML4和CSS2的“Media Queries”,而今天的主要是来学习CSS3中的”Media Queries”的更多使用方法和相关知识,下面我们开始进入今天的主题。CSS3中的Media Queries增加了更多的媒体查询,同时你可以添加不同的媒体类型的表达式用来检查媒体是否符合某些条件,如果媒体符合相应的条件,那么就会调用对应的样式表。换句简单的说,“在CSS3中我们可以设置不同类型的媒体条件,并根据对应的条件,给相应符合条件的媒体调用相对应的样式表”。现在最常见的一个例子,你可以同时给PC机的大屏幕和移动设备设置不同的样式表。这功能是非常强大的,他可以让你定制不同的分辨率和设备,并在不改变内容的情况下,让你制作的web页面在不同的分辨率和设备下都能显示正常,并且不会因此而丢失样式。

首先来看一个简单的实例:

复制代码

代码如下:

<link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" />

上面的media语句表示的是:当页页宽度小于或等于600px,调用small.css样式表来渲染你的Web页面。首先来看media的语句中包含的内容:
1、screen:这个不用说大家都知道,指的是一种媒体类型;
2、and:被称为关键词,与其相似的还有not,only,稍后会介绍;
3、(max-width:600px):这个就是媒体特性,说得通俗一点就是媒体条件。
前面这个简单的实例引出两个概念性的东西,一个就是媒体类型(Media Type)和 媒体特性(Media Query),首先一起来理解一下这两个概念:

一、媒体类型(Media Type)

媒体类型(Media Type)在css2中是一个常见的属性,也是一个非常有用的属性,可以通过媒体类型对不同的设备指定不同的样式,在css2中我们常碰到的就是all(全部),screen(屏幕),print(页面打印或打邱预览模式),其实在媒体类型不止这三种,w3c总共列出了10种媒体类型。
页面中引入媒体类型方法也有多种:

1、link方法引入

复制代码

代码如下:

<link rel="stylesheet" type="text/css" href="../css/print.css" media="print" />

2、xml方式引入

复制代码

代码如下:

<?xml-stylesheet rel="stylesheet" media="screen" href="css/style.css" ?>

3、@import方式引入
@import引入有两种方式,一种是在样式文件中通过@import调用别一个样式文件;另一种方法是在<head>>/head>中的<style>…</style>中引入,单这种使用方法在ie6-7都不被支持 如
样式文件中调用另一个样式文件:

复制代码

代码如下:

@import url("css/reset.css") screen;
@import url("css/print.css") print;

在<head>>/head>中的<style>…</style>中调用:

复制代码

代码如下:

<head>
<style type="text/css">
@import url("css/style.css") all;
</style>
</head>

4、@media引入
这种引入方式和@imporr是一样的,也有两种方式:
样式文件中使用:

复制代码

代码如下:

@media screen{
选择器{
属性:属性值;
}
}

在<head>>/head>中的<style>…</style>中调用:

复制代码

代码如下:

<head>
<style type="text/css">
@media screen{
选择器{
属性:属性值;
}
}
</style>
</head>

以上几种方法都有其各自的利弊,在实际应用中我建议使用第一种和第四种,因为这两种方法是在项目制作中是常用的方法,对于他们的具体区别,我就不说了,想了解的大家可以去找度娘或G爸,他们能帮你解决。

二、媒体特性(Media Query)

前面有简单的提到,Media Query是CSS3 对Media Type的增强版,其实可以将Media Query看成Media Type(判断条件)+CSS(符合条件的样式规则),常用的特性w3c共列出来13种。具体的可以参阅:Media features。为了更能理解Media Query,我们在次回到前面的实例上:
  <link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" />
转换成css中的写法为:

复制代码

代码如下:

@media screen and (max-width: 600px) {
选择器 {
属性:属性值;
}
}

其实就是把small.css文件中的样式放在了@media srceen and (max-width;600px){…}的大括号之中。在语句上面的语句结构中,可以看出Media query和css的属性集合很相似,主要区别在:
1、Media query只接受单个的逻辑表达式作为其值,或者没有值;
2、css属性用于声明如何表现页页的信息;而Media Query是一个用于判断输出设备是否满足某种条件的表达式;
3、Media Query其中的大部分接受min/max前缀,用来表示其逻辑关系,表示应用于大于等于或者小于等于某个值的情况
4、CSS属性要求必须有属性值,Media Query可以没有值,因为其表达式返回的只有真或假两种
常用的Media Query如下表所示:

Media features Value Applies to Accepts min/max
width length visual and tactile media types yes
height length visual and tactile media types yes
device-width length visual and tactile media types yes
device-height length visual and tactile media types yes
orientation portrait | landscape bitmap media types no
aspect-ratio ratio bitmap media types yes
device-aspect-ratio ratio bitmap media types yes
color integer visual media types yes
color-index integer visual media types yes
monochrome integer visual media types yes
resolution resolution bitmap media types yes
scan progressive | interlace “tv” media types no
grid integer visual and tactile media types no

兼容的浏览器:

IE6 不支持
IE7 不支持
IE8 不支持
IE9 支持
Chrome5 支持
Opera10 支持
Firefox3.6 支持
Safari4 支持

三、Media Queries 的具体使用

下面我们一起来看看Media Queries的具体使用方式

3.1、最大宽度Max Width

复制代码

代码如下:

<link rel="stylesheet" media="screen and (max-width:600px)" href="small.css" type="text/css" />

上面表示的是:当屏幕小于或等于600px时,将采用small.css样式来渲染Web页面。
3.2、最小宽度Min Width

复制代码

代码如下:

<link rel="stylesheet" media="screen and (min-width:900px)" href="big.css" type="text/css" />

上面表示的是:当屏幕大于或等于900px时,将采用big.css样式来渲染Web页面。
3.3、多个Media Queries使用

复制代码

代码如下:

<link rel="stylesheet" media="screen and (min-width:600px) and (max-width:900px)" href="style.css" type="text/css" />

Media Query可以结合多个媒体查询,换句话说,一个Media Query可以包含0到多个表达式,表达式又可以包含0到多个关键字,以及一种Media Type。正如上面的其表示的是当屏幕在600px-900px之间时采用style.css样式来渲染web页面。
3.4、设备屏幕的输出宽度Device Width

复制代码

代码如下:

<link rel="stylesheet" media="screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />

上面的代码指的是iphone.css样式适用于最大设备宽度为480px,比如说iPhone上的显示,这里的max-device-width所指的是设备的实际分辨率,也就是指可视面积分辨率
3.5、iPhone4

复制代码

代码如下:

<link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="iphone4.css" />

上面的样式是专门针对iPhone4的移动设备写的。
3.6、iPad

复制代码

代码如下:

<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css" type="text/css" />
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css" type="text/css" />

在大数情况下,移动设备iPad上的Safari和在iPhone上的是相同的,只是他们不同之处是iPad声明了不同的方向,比如说上面的例子,在纵向(portrait)时采用portrait.css来渲染页面;在横向(landscape)时采用landscape.css来渲染页面。
3.7、android

复制代码

代码如下:

/*240px的宽度*/
<link rel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" type="text/css" />
/*360px的宽度*/
<link rel="stylesheet" media="only screen and (min-device-width:241px) and (max-device-width:360px)" href="android360.css" type="text/css" />
/*480px的宽度*/
<link rel="stylesheet" media="only screen and (min-device-width:361px) and (max-device-width:480px)" href="android480.css" type="text/css" />

我们可以使用media query为android手机在不同分辨率提供特定样式,这样就可以解决屏幕分辨率的不同给android手机的页面重构问题。
3.8、not关键字

复制代码

代码如下:

<link rel="stylesheet" media="not print and (max-width: 1200px)" href="print.css" type="text/css" />

not关键字是用来排除某种制定的媒体类型,换句话来说就是用于排除符合表达式的设备。
3.9、only关键字

复制代码

代码如下:

<link rel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" type="text/css" />

only用来定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。其实only很多时候是用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表的。其主要有:支持媒体特性(Media Queries)的设备,正常调用样式,此时就当only不存在;对于不支持媒体特性(Media Queries)但又支持媒体类型(Media Type)的设备,这样就会不读了样式,因为其先读only而不是screen;另外不支持Media Qqueries的浏览器,不论是否支持only,样式都不会被采用。
3.10、其他
在Media Query中如果没有明确指定Media Type,那么其默认为all,如:

复制代码

代码如下:

<link rel="stylesheet" media="(min-width: 701px) and (max-width: 900px)" href="medium.css" type="text/css" />

另外还有使用逗号(,)被用来表示并列或者表示或,如下

复制代码

代码如下:

<link rel="stylesheet" type="text/css" href="style.css" media="handheld and (max-width:480px), screen and (min-width:960px)" />

上面代码中style.css样式被用在宽度小于或等于480px的手持设备上,或者被用于屏幕宽度大于或等于960px的设备上。
最后总体归纳一下其功能,就是一句话:Media Queries能在不同的条件下使用不同的样式,使用页面达到不同的渲染效果。。

CSS3 Media Queries详细介绍和使用实例相关推荐

  1. CSS3 Media Queries 详细介绍与使用方法,Responsive Web Design 必备技术, 响应式设计

    上一篇我们介绍了Responsive Web Design之后,这次要来详细介绍CSS3 Media Queries了. 在上一篇中,我们提到Responsive Web Desig n的实作方式有大 ...

  2. CSS3 Media Queries在iPhone4和iPad上的运用

    CSS3 Media Queries的介绍在W3CPlus上的介绍已有好几篇文章了,但自己碰到的问题与解决的文章还是相对的较少.前几天在<修复iPhone上submit按钮bug>上介绍了 ...

  3. CSS:媒体查询 CSS3 Media Queries

    定义和使用 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式. @media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的. ...

  4. css3 media queries

    CSS3 Media Queries模板 作者:大漠 日期:2012-04-04 点击:3183  最早在<CSS3 Media Queries>一文中初探了CSS3的媒体类型和媒体特性 ...

  5. CSS3 Media Queries 实现网页自适应

    文章转载自:爱思资源网http://www.aseoe.com/show-10-261-1.html 导语 接下来会展示如何运用 HTML5 和 CSS3 来设计一个自适应网页.当今银屏分辨率从 32 ...

  6. CSS3 Media Queries:移动 Web 的完美开端

    移动时代,是任何 Web 设计与开发者都不能忽视的一个时代,总有一天,你设计的东西将被显示在两种屏幕上,桌面大屏幕和移动小屏幕,如何让同一个网站同时适应完全不同的两种尺寸的屏幕,这是一个很久以来都没有 ...

  7. 响应式web设计之CSS3 Media Queries

    开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...

  8. 【Android数据存储】ContentProvider详细介绍(附实例源码)

    1.ContentProvider是什么? ContentProvider--内容提供者.它是一个类,这个类主要是对Android系统中进行共享的数据进行包装,并提供了一组统一的访问接口供其他程序调用 ...

  9. html响应式布局教程,css3 media 响应式布局的简单实例

    html> /*    小于200px*/ @media (min-width:200px ) and (max-width:500px ) { #p{ background: red; } } ...

最新文章

  1. 计算机专业i7 7500u,8550U比7500U提升多少 8550U和7500U的区别-太平洋电脑网
  2. 让你完全理解base64是怎么回事
  3. 阿里云CentOS搭建系统
  4. 用VIPER构建iOS应用
  5. 深度学习之PyTorch物体检测实战——新书赠送活动
  6. android html文字垂直居中,Android EditText文本不是垂直居中的
  7. 1对1直播社交app源码开发—5G璀璨明珠
  8. 腾讯语音合成V3鉴权失败
  9. 电子计算机上的off是什么意思,计算器上off是什么意思
  10. 不同设备以及浏览器的userAgent值大全
  11. 时间序列:Shapelets
  12. python数字求和菜鸟教程_Python Number(数字) | 菜鸟教程
  13. 批量转账到支付宝ISV(API接口流程步骤)
  14. 机器学习之Javascript篇: 近邻(k-nearest-neighbor) 算法介绍
  15. 强大的strace命令
  16. Java学习笔记16-多线程
  17. matlab干涉全息图,基于MATLAB的计算全息干涉图仿真
  18. VRTK4.0学习(六):给控制器添加激光射线
  19. 全国计算机等级考试试题研究组,全国计算机等级考试命题研组
  20. Vue中对表单的增删改查(不含图片)

热门文章

  1. hdu 3721 树的最小直径
  2. hdu4280 最大流DINIC
  3. 两个整数相加 相乘 有符号与无符号 溢出判断条件 移位与2的幂
  4. 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
  5. 【Android 属性动画】属性动画 Property Animation 与 视图动画 View Animation 区别
  6. NSAssert的使用
  7. I/O:OutputStream
  8. AAuto 快速开发win32小程序
  9. 开源ERP系统 CK-ERP
  10. 购买阿里云服务器地域如何选择?