css - 在顺序媒体查询中使用最大宽度和最小宽度的优点?

标签 css media-queries breakpoints

在存在一系列明确的断点和相关媒体查询的情况下,每个媒体查询都会更改相同的属性,添加 max-width 值是否有任何优势以及 min-width 值?

例如使用有什么好处:

@media (min-width: 300px) and (max-width: 599px) {
   color: red;
}
@media (min-width: 600px) and (max-width: 999px) {
   color: blue;
}
@media (min-width: 1000px) {
   color: green;
}

不仅仅是:

@media (min-width: 300px) {
   color: red;
}
@media (min-width: 600px) {
   color: blue;
}
@media (min-width: 1000px) {
   color: green;
}

澄清一下,我知道我可以通过添加最小和最大宽度来定位一个范围,但我指的是断点是连续的并且基于宽度的情况。鉴于序列中的下一个值将覆盖(胜过)前一个值,是否有任何理由明确声明一个范围。

最佳答案

同时指定 min-widthmax-width 允许您创建互斥的规则 block 。优点是您可以按任何顺序指定媒体查询。 缺点是您需要更频繁地重复 CSS 规则。示例:

/* order of media queries does not matter */
@media (max-width: 299px) {
    #section-1 { display: none; }
    #section-2 { display: none; }
}
@media (min-width: 300px) and (max-width: 599px) {
    #section-1 { display: block; }
    #section-2 { display: none; }
}
@media (min-width: 600px) {
    #section-1 { display: block; }
    #section-2 { display: block; }
}

仅指定 min-widthmax-width 允许您创建可以级联跨越多个断点的规则 block 。优点是您可以用最少的重复来编写 CSS 规则。缺点是媒体查询需要升序(最小宽度)或降序(最大宽度),否则 you run into WTFs .示例:

/* mobile first */
#section-1 { display: none; }
#section-2 { display: none; }
@media (min-width: 300px) {
    #section-1 { display: block; }
}
@media (min-width: 600px) {
    #section-2 { display: block; }
}
/* desktop first */
#section-1 { display: block; }
#section-2 { display: block; }
@media (max-width: 599px) {
    #section-2 { display: none; }
}
@media (min-width: 299px) {
    #section-1 { display: none; }
}

关于css - 在顺序媒体查询中使用最大宽度和最小宽度的优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317643/

相关文章:

css - CSS 查询是否需要最大宽度变量?

ipad - CSS 媒体查询 : device-width on desktop

java - 调试时使用 Java 8 在 ClassLoader 上中断 Eclipse

css - 如果指定了端口,样式表将不起作用 - node.js express

javascript - HTML 在下面的标签中显示输入结果

css - 两个@media 变量,问题

android - Android Studio中设置kotlin断点时如何防止变量被优化掉

html - 无法从 Bootstrap 菜单中删除黑条以显示我的菜单更改

jquery - DataTables 固定列透明与 Bootstrap 4 strip 表

c# - 如何在调试中访问根命名空间