【问题标题】:min-height/min-width doesn't respect box-sizing in some browsers在某些浏览器中,min-height/min-width 不考虑 box-sizing
【发布时间】:2012-03-19 11:29:04
【问题描述】:

请参阅此示例:http://jsfiddle.net/vrgT3/5/

我用overflow: auto; 制作了一个250x250px 父div,因此当内容溢出框时会出现滚动条。我设置了蓝色背景,以便在父级可见时清楚。

在父级内部是一个带有红色背景的子级 div 以提高可见性。它具有8px 黑色边框和box-sizing: border-box;,因此在计算框的大小时会包含填充和边框。子 div 设置为 min-height: 100%min-width: 100%

预期结果: 子 div 应该与父 div 的大小完全相同,因此不会显示蓝色,也不会出现滚动条。计算的框大小(内容+填充+边框)应为250x250px。应该有8px黑色边框嵌入这个,留下一个234x234px红色区域。

适用于:

  • Midori 4.1 Ubuntu
  • 铬 16 Ubuntu
  • Opera 11.61 Ubuntu

问题:

  • IE 8 WinXP:出现水平和垂直滚动条。内容为249x266px,带有8px 边框,计算出的框大小为265x282px

  • Firefox 3.6 WinXP:出现垂直滚动条。内容为217x250px,计算框大小为233x266px

  • Firefox 10 Ubuntu:出现垂直滚动条,内容为221x250px,计算框大小为237x266px

我检查了 caniuse.com,似乎至少有问题的浏览器支持所需的min-heightmin-widthbox-sizing。什么给了?

解决方案: 正如 Marat 所建议的,这确实是一个浏览器错误。我已经解决了一个使用 JavaScript 添加填充/边距以纠正 offsetWidth/Height 差异的解决方法。在这里看到它:http://jsfiddle.net/vrgT3/8/

【问题讨论】:

  • IE8 的最小/最大宽度/高度和溢出问题早已为人所知;盒子大小不相关。至于其他……
  • 感谢您的快速响应!我已尝试删除 overflow 属性(因此回退到 overflow: visible),但在 IE 和 FF 中的尺寸仍然不正确。 box-sizing 的目的是在min-*: 100% 中包含大边框。这与 Midori、Opera 和 Chromium 一样有效。
  • 另见css-tricks.com/box-sizing(“支持”部分下方的“最小值/最大值”部分)

标签: html css overflow


【解决方案1】:

这是 Firefox(参见 bug 308801)和 IE8(IE9 可以正常工作)的不幸错误。

该错误已在 Firefox 17+ 中修复。

【讨论】:

  • 啊,原来如此。但说真的,我们在 Firefox 10 中存在近 7 年的错误?任何已知的解决方法?
  • 解决方法是使用额外的包装器。然后为没有min-height的子块设置borderpadding,为子块的父块设置min-height
  • 顺便说一句,如果该错误对您很重要,请考虑在错误页面上投票支持它的修复。该错误的投票越多,它很快被修复的机会就越大。例如,对于 bug 401322,获得 96 票的 bug 获得高优先级就足够了,而且修复得很快(报告后约 3.5 个月)。
  • 我似乎仍然无法找到适用于我列出的所有浏览器的示例。如果没有其他人能弄清楚,我会在回家后发布另一个示例。
  • 这似乎适用于这个例子,但它是否允许基于百分比的大小?
猜你喜欢
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 2016-05-22
  • 1970-01-01
相关资源
最近更新 更多