CSS3的媒体查询

CSS中的Media Query(媒介查询)是什么?

    作为CSS3规范的一部分,媒体查询可以针对不同的屏幕尺寸设置不同的样式,它为每种类型的用户提供了最佳的体验,网站在任何尺寸设置下都能有最佳的显示效果。
    通过不同的媒体类型和条件定义样式表规则。
    媒体查询让CSS可以更精确作用于不同的媒体类型和同一媒体的不同条件。
    媒体查询的大部分媒体特性都接受min和max用于表达“大于或等于”和“小与或等于”。如:width会有min-width和max-width
    Media Queries功能是非常强大的,他可以让你定制不同的分辨率和设备,并在不改变内容的情况下,让你制作的web页面在不同的分辨率和设备下都能显示正常,并且不会因此而丢失样式

先看一个例子:

页面的布局会根据浏览器的尺寸在1列,2列和4列之间切换
http://colly.com/

媒体查询实例
    通过此实例观察媒体查询的功能后,再来分析语法
    body{background-color:grey; }   //正常情况是灰色

@media screen and (max- 768px) { //宽度小于768px的时候被应用  移动端
          .class { background: #ccc; }  }            

@media screen and (min- 768px) and (max- 992px) {  //宽度在 768px 和 992px 之间的时候被应用
          .class {  background: #333;  }   }

@media screen and (min- 992px) {//宽度大于 992px 的时候被应用 pc端
          .class {background: #666;}  }                                    

 注意:这三个媒体查询这样子排序有利于代码结构清晰

 

使用Media Query的基本语法
@media mediatype and|not|only (media feature) {
       CSS-Code;
 }
    以上通过@media定义媒体查询,mediatype代表了设备类型,目前只有screen最常用,and|not|only为条件,media feature为媒体特点,通常是写设备的宽度。
    @media screen and (max-960px) 的意思为:当前设备为screen(电脑、平板、手机)时,并且最大宽度为960时,显示的样式。
媒体类型有:
    all 所有设备
    print    用于打印机和打印预览
    screen    用于电脑屏幕,平板电脑,智能手机等
    speech    应用于屏幕阅读器等发声设备

加载媒体查询的最佳方法:
    使用多个独立的CSS文件会增加HTTP请求的数量,使页面加载变慢。所以我们的媒体查询样式的文件尽量放在一个里面,以注释加以区分。

阻止移动浏览器自动调整页面大小
    ios和android浏览器都基于webkit内核,这两种浏览器和许多其它浏览器都支持用viewport meta元素覆盖默认的画布缩放设置。只需要在HTML的<head>标签中插入一个<meta>标签,meta标签中可以设置具体的宽度或缩放比。下面为示例

<meta name="viewport"  content="initial-scale=1.0,width=device-width" />
    name=”viewport”  说明此meta标签定义视口的属性
    initial-scale=2.0   意思是将页面放大两倍
    width=device-width   告诉浏览器页面的宽度等于设备宽度
    
    允许用户将页面最大放大至设备宽度3倍,最小压缩至设备宽度的一半
<meta name=”viewport” content=”width=device-width, maximum-scale=3, minimum-scale=0.5” />
    
    禁止用户缩放,可以在混合APP时,为了使html页面更逼真,使页面无法缩放
<meta name=”viewport” content=”initial-scale=1.0, user-scalable=no” />   //user-scalable=no是禁止缩放

 

###css3媒体查询
    css3媒体查询是响应式方案核心
       
###媒体类型
       all                  所有媒体(默认值)
       screen           彩色屏幕
       print              打印预览
       
       projection     手持设备
       tv                   电视
       braille           盲文触觉设备
       embossed     盲文打印机
       speech        “听觉”类似的媒体设备
       tty                 不适用像素的设备
       

###媒体属性
    width               (可加max min前缀)
    height               (可加max min前缀)
    device-width       (可加max min前缀)
    device-pixel-ratio(可加max min前缀,需要加webkit前缀)
    orientation   portrait竖屏
                  landscape横屏

###操作符,关键字 (only,and,(,or),not)
               only:
                   防止老旧的浏览器  不支持带媒体属性的查询而应用到给定的样式.
                   @media only screen and (min-800px ){
                                       规则;
                                       规则
                   }
                   @media  screen and (min-800px ){
                                       规则;
                                       规则
                   }
                   在老款的浏览器下
                       @media only    --->    因为没有only这种设备 规则被忽略
                       @media screen --->   因为有screen这种设备而且老浏览器会忽略带媒体属性的查询
                   
                   建议在每次抒写media query的时候带上only
           
               and:
                   连接媒体属性 、连接媒体类型
                   对于所有的连接选项都要匹配成功才能应用规则
               
               or(,) : 和and相似
                   对于所有的连接选项只要匹配成功一个就能应用规则
               
               not:取反


 

原文地址:https://www.cnblogs.com/xiaohaodeboke/p/12536829.html