CSS3 多媒体查询

CSS3 的多媒体查询继承了 CSS2 多媒体类型的所有思想: 取代了查找设备的类型,CSS3 根据设置自适应显示。

媒体查询可用于检测很多事情,例如:

viewport(视窗) 的宽度与高度

设备的宽度与高度

朝向 (智能手机横屏,竖屏) 。

分辨率

目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。

多媒体查询语法

多媒体查询由多种媒体组成,可以包含一个或多个表达式,表达式根据条件是否成立返回 true 或 false。

@media not|only mediatype and (expressions) {

    CSS-Code;

}

如果指定的多媒体类型匹配设备类型则查询结果返回 true,文档会在匹配的设备上显示指定样式效果。

除非你使用了 not 或 only 操作符,否则所有的样式会适应在所有设备上显示效果。

not: not是用来排除掉某些特定的设备的,比如 @media not print(非打印设备)。

only: 用来定某种特别的媒体类型。对于支持Media Queries的移动设备来说,如果存在only关键字,移动设备的Web浏览器会忽略only关键字并直接根据后面的表达式应用样式文件。对于不支持Media Queries的设备但能够读取Media Type类型的Web浏览器,遇到only关键字时会忽略这个样式文件。

all: 所有设备,这个应该经常看到。

实例1:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>php.cn</title> 
<style>
 /*    小于200px*/   
        @media only screen and (max-width:200px ) {   
            #p{   
                background: red;   
            }   
        }   
/*    大于300px*/   
        @media only screen and (min-width:300px ) {   
            #p{   
                background: yellow;   
            }   
        }   
</style>
</head>
<body>
  <p id="p">小于200px背景变红色大于300px背景为黄色</p> 
</body>
</html>

实例2:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>php.cn</title> 
    <style>  
        /body{background:blue;}/*宽度500px-800px之间+高度100px-400px之间 蓝色*/
        @media screen and (max-width:500px){body{background:green;}}/*宽度小于500px时 绿色*/
        @media screen and (min-width:800px){body{background:red;}}/*宽度大于800px时 红色*/
        @media screen and (max-height:100px){body{background:yellow;}}/*高度小于100px时 黄色*/
        @media screen and (min-height:400px){body{background:pink;}}/*高度大于400px时 粉色*/
    </style>  
</head>
<body>
    <p>效果演示,请缩小/扩大浏览器的窗口大小注意背景色的变化。逻辑如下:</p>
    <p>/*宽度500px-800px之间+高度100px-400px之间 蓝色*/</p>
    <p>/*宽度小于500px时 绿色*/</p>
    <p>/*宽度大于800px时 红色*/</p>
    <p>/*高度小于100px时 黄色*/</p>
    <p>/*高度大于400px时 粉色*/</p>
</body>
</html>
Weiter lernen
||
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="utf-8"> <title>php.cn</title> <style> .wrapper {overflow:auto;} #main {margin-left: 4px;} #leftsidebar {float: none;width: auto;} #menulist {margin:0;padding:0;} .menuitem { background:#CDF0F6; border:1px solid #d4d4d4; border-radius:4px; list-style-type:none; margin:14px; padding:12px; } @media screen and (min-width: 300px) { #leftsidebar {width:200px;float:right;} #main {margin-left:216px;} } </style> </head> <body> <div class="wrapper"> <div id="leftsidebar"> <ul id="menulist"> <li class="menuitem">php</li> <li class="menuitem">js</li> <li class="menuitem">css</li> <li class="menuitem">html</li> <li class="menuitem">ios</li> </ul> </div> <div id="main"> <p>在屏幕可视窗口尺寸小于 300 像素时将菜单浮动到页面右侧。</p> </div> </div> </body> </html>
einreichenCode zurücksetzen