Blogger Information
Blog 9
fans 0
comment 2
visits 6820
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Media 查询详解
Fergus的博客
Original
1116 people have browsed it

媒体类型(Media Type)
媒体类型(Media Type)在css中是一个常见的属性,也是一个非常有用的属性,可以通过媒体类型对不同的设备指定不同的样式,在css中我们常碰到的就是 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/screen.css" ?>

3、@import方式引入(存在兼容、渲染先后顺序问题)

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

@import url("css/screen.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引入(建议小范围的推荐使用,大面积使用容易混淆)
这种引入方式和@import是一样的,也有两种方式:
样式文件中使用:

 @media screen{
     选择器{
    key:key_value;
     }
   }
在<head>>/head>中的<style>...</style>中调用:
  <head>
    <style type="text/css">
    @media screen{
           选择器{
         key:key_value;
       }
    }
    </style>
  </head> 

下面我们来看看兼容的浏览器:
 
下面我们一起来看看Media 的具体使用方式
一、最大宽度Max Width

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

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

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

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

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

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

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

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

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

上面的样式是专门针对iPhone4的移动设备写的。
六、iPad适配(横屏and竖屏)

<link rel="stylesheet" media="all and (orientation:portrait)" href="iPad_portrait.css" type="text/css" />//纵向采用iPad_portrait来渲染

  <link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css"  type="text/css" />//横向采用landscape来渲染

在大数情况下,移动设备iPad上的Safari和在iPhone上的是相同的,只是他们不同之处是iPad声明了不同的方向;

七、android

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

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

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

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

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

only用来定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。其实only很多时候是用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表的。
其主要有:支持媒体特性(Media Queries)的设备,正常调用样式,此时就当only不存在;对于不支持媒体特性(Media Queries)但又支持媒体类型(Media Type)的设备,这样就会不读了样式,
因为其先读only而不是screen;另外不支持Media Query的浏览器,不论是否支持only,样式都不会被采用。
十、其他
在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的设备上。

TIP:媒体查询的意义在于不同的条件下使用不同的样式,使得页面达到不同的渲染效果,达到我们理想中的适配!


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
1 comments
Mendacity 2017-09-08 09:57:56
最近在写移动端,正好用到media做适配,谢谢分享
1 floor
Author's latest blog post