css - 响应式网站的媒体查询最小宽度 VS 最大宽度

标签 css

<分区>

长期以来我一直在使用下面的媒体查询来制作响应式网站

// Large devices (desktops, less than 1200px)
 @media (max-width: 1199px) { ... }

 // Medium devices (tablets, less than 992px)
 @media (max-width: 991px) { ... }

 // Small devices (landscape phones, less than 768px)
 @media (max-width: 767px) { ... }

 // Extra small devices (portrait phones, less than 576px)
 @media (max-width: 575px) { ... }

但是当我检查 bootsrap 4 时,我注意到他们正在使用以下查询

/* Small. Above 34em (544px) */
 @media screen and (min-width: 34em) { ... }

 /* Medium. Above 48em (768px) */
 @media screen and (min-width: 48em) { ... }

 /* Large. Above 62em (992px) */
 @media screen and (min-width: 62em) { ... }

 /* Extra large. Above 75em (1200px) */
 @media screen and (min-width: 75em) { ... }

我想知道我应该继续我的方式还是更好地遵循 bootsrap 方式, 为什么他们决定从小型设备开始转向大型设备?

谢谢

最佳答案

在目前的形式下,您的问题主要基于意见。
最好问问是否有人知道 Bootstrap 方法背后的原因可能是什么,尽管这个问题也主要是基于意见。但是,与尝试联系 Bootstrap 的作者相比,在这里获得答案的真正机会要高得多。
这就是为什么我会给你我自己的推理,来自实践方法:我需要完成工作,它必须快速并且必须准备好生产。


@media 查询的顺序而言,使用mobile-first 的唯一理由desktop-first对于不知道它是什么意思的人来说听起来更好。因此,当您的客户/老板提出以下问题时,您可以随时回复他们:

— 是“移动优先”吗?
——当然,我们使用最新的技术......

但是,在现实世界中,只要您的 @media 查询对每个响应间隔应用正确的代码,您就做对了 .

您唯一应该担心的是,在可能的情况下按此顺序:

  • 编写有效代码
  • 编写跨设备/跨浏览器代码
  • 编写可维护且易于阅读的代码(为您其他开发者)
  • 为相同的功能编写更少的代码。

关于 using empx,这是 Bootstrap 第二次尝试转储 px 用于 @media 查询中的 em。据我所知,由于缺乏支持以及当时大部分移动浏览器的 em 计算存在差异,第一次尝试被放弃了。但是,这里需要引用,我找不到关于我记得 2 年前读过的那个讨论的任何内容。我什至不确定它是围绕 v3 还是当时发布的 v4 原型(prototype)。不过,我认为它是 v4
无论如何,如果他们决定在 v4 中使用 em,那么现在可以安全使用 em
编辑:仔细研究v4 beta — 9 天前发布,看起来你引用的是 scss 文件,后来解析为 px 查询到最终的 dist code .所以我假设我记得读过的讨论在今天仍然有效。总之,我建议不要在 CSS @media 查询中使用 em


最后但并非最不重要的一点是,screen 部分仅在您需要关注页面的打印效果时才应考虑它在屏幕上的样子。

如果您确实需要处理这个问题,根据两者之间的差异,您必须评估如果将所有现有 (screen) 代码应用于 print 与从头开始编写所有 print 代码。

如果 first 更快,请不要将 screen 添加到您的查询中,并将 @media print 覆盖放在最后。
如果后者更快,将现有代码包装在 @media screen 中,将 screen 添加到您现有的查询中,就像 Bootstrap 所做的那样,并将您的 print代码在另一个 @media print 中,因此它不会影响 screen

注意:我更喜欢第一种方法,因为它是一种亲身实践的方法,易于测试并且通常可以减少编写的代码。

关于css - 响应式网站的媒体查询最小宽度 VS 最大宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45780949/

相关文章:

jquery - 制作像 jgrowl 一样的 float div

css - 如何更改特定 CSS 伪元素的属性?

jquery - jquery-ui.css googleapis 与 localhost 的奇怪行为

html - IE8 不透明度问题

css - 如何在JSP中应用css?

javascript - Div 在 IE 上不翻转

html - Bootstrap 按钮组大小因文本而异

css - 我们如何在 react-native 中设计 Arrow 卡

javascript - jQuery 使用 css 滑动内容

javascript - 如何更改汉堡包的背景颜色