我们终于学会了如何居中一个 div,然后浏览器又加了侧边栏

围绕整个浏览器窗口而不仅仅是可见视口来居中页面内容,引发了依赖侧边栏、垂直标签页和平铺式窗口布局的开发者和用户的强烈反对。批评者认为,试图把固定宽度的“居中”栏始终保持在屏幕正中,会导致内容被浏览器 UI 遮挡,破坏预期的布局行为,增加可访问性和响应式设计的复杂度,并泄露更多关于用户环境的信息。许多评论者认为,这类技巧最多只是浏览器层面的问题,最糟则是明显对用户不友好;他们更倾向于让站点只在视口内居中,并忽略周围的浏览器装饰。

“居中一个 div”是什么意思

  • 一些读者把“居中一个 div”理解为仅水平居中(margin: 0 auto),另一些则理解为水平和垂直都居中。
  • 文章使用这种带梗的说法,在一些人看来与其主要聚焦于水平居中、侧边栏相关的话题并不匹配。

视口 vs 窗口/屏幕居中

  • 核心分歧在于:“居中”的内容应该相对于 视口(可见页面区域)居中,还是在侧边栏打开时相对于 浏览器窗口 / 屏幕 居中?
  • 许多人强烈认为居中必须是在视口内:侧边栏会减少可用宽度,所以内容也应该随之移动。
  • 少数人喜欢即使浏览器侧边栏打开,内容仍固定在物理屏幕中心的想法,但他们大多认为这只是个人偏好,适合做成扩展,而不是默认的网页行为。
  • 还有几条评论指出,窗口位置、多显示器、平铺式窗口管理器以及非最大化窗口,使得“以屏幕为中心”的语义要么毫无意义,要么明显错误。

可用性与设计观点

  • 很大一部分人认为,浏览器侧边栏遮住内容显然是糟糕的 UX,而且“这不是页面该操心的事”。
  • 也有人说浏览器的职责就是管理覆盖层/侧边栏;如果某个侧边栏应该像覆盖层一样工作,那应该是浏览器设置,而不是页面逻辑。
  • 还有人反对文章本身的页面设计:仿“纸张”的内层滚动容器、不同于原生滚动的滚动行为,以及非常窄的内容宽度。
  • 反方则引用偏好更短行长的排版研究;这些“最佳宽度”规则在一些人看来有帮助,在另一些人看来则过于教条,并且与用户偏好相冲突。

技术与实现问题

  • 多条反馈称,该演示在 Firefox 或 Chromium 中并不像描述的那样工作,或只是在某些时候才会这样,并且在切换侧边栏时会出现闪烁和竞态条件。
  • 使用额外的 JS 去对抗浏览器布局被批评为脆弱、视觉上突兀,而且在边缘情况下很可能出问题。

隐私与 Web API 方面的担忧

  • 使用 screenX/screenY、窗口尺寸以及相关 API 来推断窗口位置,被视为又一个指纹识别和信息泄漏的渠道。
  • 也有人对新的 Web API 表达更广泛的怀疑:它们让网站能够推断视口之外的宿主 UI 情况。