本文参考MichelleKlann的Media Queries Demystified: Min-Width and Max-Width

媒体查询(media queries)是响应式设计(Responsive Web Design简称RWD)必不可少的一部分。

媒体查询有两个关键词min-width和max-width, 接触过媒体查询的同学可能会认同我, 这两个关键词很绕;从字面上理解它们可能不那么容易,以至于我每次都需要在脑海里面不断演算,然后小心翼翼地测试效果(大概和写正则表达式的感觉差不多)。

在这篇文章中我尝试解开媒体查询的迷雾。首先是名词解析:

width: 通常指代视口宽度;另外width和device width的区别在于,device width指代是屏幕的物理宽度。比如iphone5的屏幕分辨率是1136x640,竖屏时device width是640,横屏时是1136。通常,移动设备的浏览器都是全屏的,所以一般情况下width等于device-width。但是height和device-height的情况不一样(浏览器上方的地址栏和下方的工具栏有可能不算进视口高度)。鉴于一般媒体查询不采用height,所以本文所有例子全部使用width,指代width的像素全部加粗便于理解。

  • 规则1: @media only screen and (min-width: 330px) {...}

指「width大于或者等于min-width,采用{...}的样式」

所以,如果width是320px,这条规则返回false;返回false的媒体查询规则会直接被浏览器过滤掉,不会渲染这条规则中的CSS样式。这种情况翻译过来就是:

「如果320px大于等于330px,采用{...}的样式」

问题1:有width为310px, 320px, 330px, 340px, 350px的视口,哪些视口会采用以上规则(指代规则1中{...}的CSS样式)?

  • 规则2: @media only screen and (max-width: 330px) {...}

指「width小于或者等于max-width,采用{...}的样式」

如果width是320px,这条规则会返回true,浏览器会解析这段规则中的CSS样式。这种情况翻译过来就是:

[如果320px小于或者等于330px,采用{...}的样式」

问题2:有width为310px, 320px, 330px, 340px, 350px的视口,哪些视口会采用以上规则(指代规则2中{...}的CSS样式)?

这条规则会更加容易理解,简单解释就是:视口宽度在min-width和max-width之间的,都会采用这条规则。

  • 规则3:@media only screen and (min-width: 330px) and (max-width: 350px) {...}

如果width为340px, 这条规则返回true。翻译过来就是:

「如果340px330px350px之间,采用{...}的样式」

问题3:有width为310px, 320px, 330px, 340px, 350px的视口,哪些视口会采用以上规则(指代规则3中{...}的CSS样式)?

实例:

body {
background-color: gray;
} @media screen and ( max-width: 960px ) {
body { background-color: red; }
} @media screen and ( max-width: 768px ) {
body { background-color: orange; }
} @media screen and ( max-width: 550px ) {
body { background-color: yellow; }
} @media screen and ( max-width: 320px ) {
body { background-color: green; }
}

这条规则翻译过来就是:

1. 显示灰色背景;
2. width为0-960px的,显示红色背景;
3. width为0-768px的,显示橙色背景;
4. width为0-550px的,显示黄色背景;
5. width为0-320px的,显示绿色背景;

需要提醒一下的是CSS的优先级概念,在样式表中越后的样式优先级越高,就是后面的样式会覆盖前面的样式。在这个例子中,我们先设定了默认颜色为灰色。如果width大于960px的,会显示灰色。

假设width为750px,会先匹配到灰色,再匹配红色,最终显示了橙色。由于width等于750px,它不在0-550px和0-320px这个范围,浏览器不会解析这些样式。

codepen示例

查看上面的示例,先把浏览器放到最大,再逐渐拉窄;窗口颜色分别从灰色变成红色、橙色、黄色、绿色。

欢迎分享本文, 但请保留原文链接。

揭开CSS3媒体查询迷雾(min-width和max-width)的更多相关文章

  1. CSS3 媒体查询移动设备尺寸 Media Queries for Standard Devices (包括 苹果手表 apple watch)

    /* ----------- iPhone 4 and 4S ----------- */ /* Portrait and Landscape */ @media only screen and (m ...

  2. iPhone的CSS3媒体查询

    iPhone的CSS3媒体查询: 各版本的iPhone媒体查询是根据其分辨率和一些CSS3媒体查询的特性来实现媒体查询的...详见下: iPhone6的媒体查询: @media only screen ...

  3. iPhone6的CSS3媒体查询

    @media only screen and (min-device-width: 375px) and (max-device-width: 667px) and (orientation : po ...

  4. CSS3媒体查询使用小结

    首先我们在使用Media的时候需要先设置下面这段代码,来兼容移动设备的展示效果: 准备工作1:设置Meta标签 <meta name="viewport" content=& ...

  5. CSS3媒体查询

    随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得在国内IE6用户居高不下的情况下,这些新的技术还不会广泛的蔓延下去,那你就错了,如今淘宝,凡客,携程等等公司都已经在大胆 ...

  6. CSS3媒体查询总结

    1.什么是媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于 ...

  7. Html5 @media + css3 媒体查询

    css3 media媒体查询器用法总结   随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得在国内IE6用户居高不下的情况下,这些新的技术还不会广泛的蔓延下去,那你就错 ...

  8. css3 媒体查询的学习。

    1.什么是媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于 ...

  9. 关于css3媒体查询和响应式布局

    响应式设计 响应式设计可根据所显示的屏幕大小而改变, 它呈现的每个屏幕看起来并不相同.按照可用的屏幕属性,响应式设计提供了 UI 的最佳效果. 例如,如果网站布局上有一个占据 25% 的屏幕宽度的侧边 ...

随机推荐

  1. js onchange事件

    因为onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件. 如果你需要即时监听输入框值的变化,建议使用 onpropertychange 事件! 在IE下,当一个H ...

  2. php 仿百度文库

    http://www.haosblog.com/?mod=article_read&id=386

  3. Python引用传值总结

    Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...

  4. 【Linux 命令】Linux系统下强制用户下线——who,pkill

    [日期]2014年11月18日 [平台]Centos 6.5 [工具]who pkill [步骤] 1)准备工作 以root身份登录. 2)执行who命令,查看有哪些用户已登录到当前主机

  5. Javascript and DOM学习

    1.输出 document.write.(); 2.alert警告 3.confirm消息对话框:当用户点击"确定"按钮时,返回true,取消时,返回false 4.prompt提 ...

  6. 矩阵取数游戏 NOIP 2007

    2016-05-31 17:26:45 题目链接: NOIP 2007 矩阵取数游戏(Codevs) 题目大意: 给定一个矩阵,每次在每一行的行首或者行尾取一个数乘上2^次数,求取完最多获得的分数 解 ...

  7. 【noip2012】开车旅行

    题意: 给n个点的海拔h[i](不同点海拔不同) 两点的距离为abs(h[i]-h[j]) 有a.b两人轮流开车(只能往下标大的地方开) a每次会开到里当前点第二近的点 b每次会开到离当前点最近的点( ...

  8. MAX16054

    MAX16054是带有单个开关去抖以及内部闭锁电路的按键通/断控制器,可接受机械开关产生的嘈杂输入,并经过一个有工厂设置的延迟时间后产生干净的数字锁存输出. 开关通.断期间,MAX16054无接触抖动 ...

  9. hdoj 2122 Ice_cream’s world III

    并查集+最小生成树 Ice_cream’s world III Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  10. 如何自己动手实现 KVO(转)

    KVO (Key-Value Observing) KVO 是 Objective-C 对观察者模式(Observer Pattern)的实现.也是 Cocoa Binding 的基础.当被观察对象的 ...