【问题标题】:Why is there a Max width of a website of 960px instead of just making it a percentage of width?为什么网站的最大宽度为 960 像素,而不是仅占宽度的百分比?
【发布时间】:2018-10-05 17:14:38
【问题描述】:

Bulma 和我认为 Bootstrap 的媒体查询有最大宽度。

您为什么不将宽度设置为屏幕大小的百分比并保持不变?

【问题讨论】:

  • “最大宽度”是什么意思?喜欢@media (max-width: 700px)
  • 没错。想知道当您可以定义百分比宽度并且它将始终保持该宽度时,为什么要为各种媒体查询设置最大宽度?
  • 但是百分比是多少?没有真正的“单一屏幕”可以作为所有其他屏幕的基准。
  • 是的,但是为什么百分比不合适,直到您想说通过媒体查询进入移动格式。我只是不太了解整个网站内容的最大宽度。
  • 再次,百分比是多少?要在移动设备上使用此功能,您需要一些不会随实际屏幕尺寸变化的参考屏幕尺寸。最小宽度如何:从桌面切换到平板电脑时,80% 会起作用。浏览器如何确定 80% 是什么。当浏览器基本上始终处于全屏模式时,您究竟如何在移动设备上实现 80% 的视口?我只是想了解在没有绝对像素的情况下应该如何工作。

标签: twitter-bootstrap css frontend bulma


【解决方案1】:

根据MDN's documentation on media queries,只有少数专用于尺寸的功能:widthheightdevice-widthdevice-height

过去,device-widthdevice-heigth 可用于媒体查询,理论上这可以用于您尝试做的事情,但是这有 since been deprecated 并且不能在新代码中使用.

剩下的 widthheight 采用“长度”值。

根据MDN's documentation on "length",没有对应于屏幕/显示的长度单位。

有“绝对长度单位”,尽可能与实际长度相匹配,或者在不匹配时接近近似值。例如,1px 是 1/96 英寸,或低分辨率屏幕上的 1 个设备像素。

存在与当前字体中特定字符或字体属性的大小相关的“字体相对长度”。例如,1em 等于元素(或在 font-size 属性上指定时的父元素)的当前字体大小。

最后,还有“视口百分比长度”,它与视口的大小有关。虽然这有时与屏幕/显示器的大小相混淆,但这实际上是文档可见部分的大小:专用于显示网页的浏览器部分。因此,1vw 将是页面可见部分宽度的 1%,而100vw 将是页面可见部分宽度。对于 iframe,“视口”是 iframe 的大小。您可以在下面看到这一点:

<code style="background: yellow; display: block; width: 50vw; height: 50vh">
  background: yellow;<br>
  display: block;<br>
  width: 50vw;<br>
  height: 50vh
</code>

您也可以在 CSS 的其他地方使用percentages,但所有这些都是采用继承值(父值)并将其乘以该百分比。也就是说,如果父级为100px 宽并且子级将其宽度设置为50%,则子级的宽度将转换为50px。对于媒体查询中的(min|max)-(width|height),没有可以与之比较的父级,但如果他们伪造了一个,则很可能是视口,例如vwvh,以及html 使用的百分比。然而,浏览器实际上只是完全忽略了(min|max)-(width|height) 上的百分比,如下所示:

@media (min-width: 1%) {
  * { background: yellow }
}
@media (max-width: 100%) {
  * { background: red }
}
<code style="display: block">
  @media (min-width: 1%) { div { background: yellow } }<br>
  @media (max-width: 100%) { div { background: red } }
</code>

还有resolution-related units 可以用于媒体查询(使用resolution),但它们仅限于每长度的点数,例如dpi 表示每英寸点数,而不是总点数屏幕。


与屏幕尺寸相关的媒体查询对于大多数用例来说并没有太大帮助,但是,(min|max)-(width|height) 的最大用例是不同的屏幕尺寸,例如手机、平板电脑、笔记本电脑和大型桌面显示器。在1920x1080 屏幕上有一个max-width: 50% 断点意味着断点将在960px 附近。在 iPhone XS 上,相同的断点将在 207px 附近(CSS 像素,而不是设备像素)。大多数人不会在分屏中使用浏览器,并且大多数(全部?)手机不支持窗口模式或双分屏,因此您永远不会遇到以百分比设置的高度和宽度的断点。除非您使用可以始终换行的百分比和项目,否则您必须在每个媒体查询中指定其他信息才能有用(例如,(max-width: 50%) and (min-width: 50px))。

可能对一个使用多个窗口的应用程序有帮助。考虑窗口模式下的 Photoshop 或 GIMP,而不是所有工具栏都在一个窗口中。但即便如此,任何效果都可能仍然可以通过现有的媒体查询实现。


因此,您的问题的答案是我们使用非百分比长度,因为永远不会触发视口断点(视口始终为 100%)并且不存在分辨率断点(例如,屏幕大小的百分比)。一组可用的解析断点媒体查询(device-widthdevice-height)已弃用,不得在新代码中使用。

相反,当页面的可见部分大小不同时,我们使用长度断点来更改设计,无论设备大小。

许多库使用绝对长度(例如,px)而不是相对单位(例如,em),因为大多数开发人员基于像素进行设计。随着时间的推移,出现了向相对单位的转变,但还没有达到临界点。

虽然960px 相当普遍,但此桌面/平板电脑断点已随着时间而改变。很长一段时间以来,网站都被设计为适合1024x768 监视器。考虑到滚动条和浏览器镶边(窗口周围的边框),网站通常设计为1000px 宽,后来980px 变得很常见,原因我不记得了,但如果一些操作我不会感到惊讶出现的系统或浏览器的 chrome 和滚动条宽度加起来超过了24px,或者它可能与当时使用它的流行框架有关。不管怎样,当移动设备变得越来越流行时,设计在网格中工作的网站也开始流行起来,这就是960px is so common nowadays的原因。

【讨论】:

  • 这是我见过的这部分 css 的最糟糕的演变。谢谢! “由于大多数开发人员基于像素进行设计,许多库使用绝对长度(例如 px)而不是相对单位(例如 em)。”所以框架使用这些基本上是因为围绕这些宽度建立了一个非正式的设计标准?
  • @mutant_city 在大多数情况下,是的。至少为什么他们使用px 而不是em 或类似的。至于他们为什么特别使用960px,那是因为960a lot of factors,非常适合使用网格进行设计。
【解决方案2】:

不同显示比例的断点值因特定像素而异,具体取决于实际使用的基本原理,例如:

小显示比例 - (min-width: 576px) and (max-width: 575px),

中等屏幕比例 - (min-width: 768px) and (max-width: 767px),

大尺寸显示尺寸 - (min-width: 591px) and (max-width: 992px),

以及额外的大显示尺寸 - (min-width: 1200px) 和 (max-width: 1199px),

【讨论】:

  • 我认为你的回答基本上很好,但你的一个例子,( min-width: 992px) and ( max-width: 591px) 的最小宽度大于最大宽度。您可能需要更正它。
  • 但是只是想知道当您可以定义尺寸的百分比时为什么还要设置最大宽度?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 2015-01-13
  • 2015-08-11
  • 1970-01-01
  • 2011-03-02
  • 2018-08-21
相关资源
最近更新 更多