媒体查询里的min-width 和 max-width

2 篇文章 0 订阅

本文参考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示例

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: min-widthmax-width是CSS中的两个属性,分别用于设置元素的最小宽度和最大宽度。min-width属性用于设置元素的最小宽度,即使元素的内容更小,元素的宽度也不会小于此值。max-width属性用于设置元素的最大宽度,即使元素的内容更大,元素的宽度也不会大于此值。 ### 回答2: min-widthmax-width都是CSS中常用的属性,用于定义元素的最小宽度和最大宽度。 min-width属性用于指定元素的最小宽度。当元素的内容宽度小于指定的最小宽度时,元素会自动扩展以容纳其内容。如果设置了一个固定宽度,同时又设置了min-width,当内容超过该宽度时,元素会自动扩展到指定的最小宽度。这在设置响应式设计时非常有用,可以避免在窗口缩小时出现滚动条。 max-width属性则用于指定元素的最大宽度。当元素的内容宽度超过指定的最大宽度时,元素会自动压缩到指定宽度以适应其容器。这在控制图像的大小时非常有用。一般情况下,如果不设置元素的宽度,当浏览器调整大小时,元素的宽度会随着窗口的大小而变化,不一定合适。所以,在这种情况下,为元素设置max-width属性,当窗口缩小到一定程度时,元素的宽度就会自动缩小到最大宽度为止。 当使用min-widthmax-width时,需要注意它们仅适用于块容器。如果应用到行内元素,则不会起作用。同时,需要注意设置min-width时,最好同时设置宽度,否则宽度可能会无限扩展。设置max-width时,需要注意元素的最小宽度不能超过最大宽度,否则max-width会被覆盖。 ### 回答3: min-widthmax-width是CSS中常用的两个属性之一,通常用来设置元素的最小宽度和最大宽度。 min-width用于限制元素的最小宽度,当元素的宽度小于指定的最小宽度时,该元素的宽度会自动扩展。这个属性常用来保证元素的显示效果,在不同的设备上表现一致。例如,如果一个容器内有两个子元素,一个宽度为200px,另一个宽度为50%,则在较小的设备上显示可能会导致子元素叠加在一起,这时可以使用min-width属性设置一个最小宽度,确保两个子元素不会重叠。另外,min-width也可以用于设置响应式布局,并根据视口的大小自动调整元素的宽度。 max-width则用于限制元素的最大宽度,当元素的宽度超出指定的最大宽度时,该元素的宽度会被自动缩小。这个属性常用于防止元素过大,影响用户体验,例如,防止图像或视频文件过大显示不全或占用用户过多的带宽。类似min-widthmax-width也可以用于响应式布局,以确保在大屏幕上元素不会过大,在小屏幕上也不会太小。 总的来说,min-widthmax-width是CSS布局中非常重要的两个属性,它们可以确保元素在不同设备和屏幕大小下始终保持良好的显示效果,提高用户体验。同时,也可以结合其他的CSS属性和技巧,创建更加复杂的响应式布局和动态效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值