跨浏览器方法使子 div 适合其父级的宽度

Posted

技术标签:

【中文标题】跨浏览器方法使子 div 适合其父级的宽度【英文标题】:Cross browser method to fit a child div to its parent's width 【发布时间】:2011-09-29 10:07:55 【问题描述】:

我正在寻找一种解决方案,让孩子 div 适合其父母的 width

我在这里看到的大多数解决方案不兼容跨浏览器(例如,display: table-cell; 不支持 IE <=8)。

【问题讨论】:

如果我猜对了,请不要在孩子身上声明宽度。 【参考方案1】:

解决办法就是不声明width: 100%

默认为width: auto,对于块级元素(例如div),无论如何都会占用可用的“完整空间”(与width: 100% 的做法不同)。

见:http://jsfiddle.net/U7PhY/2/

以防万一我的回答还不清楚:只是不要在孩子div 上设置width

你可以改为be interested in box-sizing: border-box

【讨论】:

我认为只有一个孩子? 是的,我认为你是对的。该图使我感到困惑:(幸运的是,我已经写了答案的“第二部分”,这就是这里的实际答案。 你根本不需要为孩子声明宽度属性。 您项目中包含的组件的样式属性可能会设置width 属性并导致问题。在这种情况下,为子 div 显式设置 width: auto【参考方案2】:

您可以使用box-sizing css 属性,它是跨浏览器(ie8+ 和所有真正的浏览器),对于这种情况非常好的解决方案:

#childDiv
   box-sizing: border-box;
   width: 100%; //or any percentage width you want
   padding: 50px;

Fiddle

【讨论】:

【参考方案3】:

如果你把position:relative;放在外层元素上,内层元素会按照这个放置自己。那么内部元素上的width:auto; 将与外部元素的宽度相同。

【讨论】:

然后只需删除width:100%;,该框将自动适应。【参考方案4】:

在您的图像中,您将填充放在孩子之外。不是这种情况。内边距会增加元素的宽度,因此如果您添加内边距并将其宽度设置为 100%,它将具有 100% + 内边距的宽度。为了您想要的,您只需向父 div 添加填充,或向内部 div 添加边距。因为 div 是块级元素,它们会自动扩展到其父级的宽度。

【讨论】:

我上传了一张新图片 - 抱歉,图表不好!我当然知道填充是什么意思;)【参考方案5】:

如果您想使用该填充空间......那么这里有一些东西:

http://jsfiddle.net/qD4zd/

所有颜色都是背景色。

【讨论】:

【参考方案6】:

您的子 div 中甚至不需要 width: 100%

http://jsfiddle.net/DanielDZC/w2mev/1/

【讨论】:

以上是关于跨浏览器方法使子 div 适合其父级的宽度的主要内容,如果未能解决你的问题,请参考以下文章

“宽度:-moz-fit-content;”是不是有css跨浏览器值?

使用 CSS 跨浏览器 div 居中对齐

如何使用 Tailwind 在 Flexbox 中阻止子 div 扩展以适应其父级的宽度

以跨浏览器的方式查找视口的确切高度和宽度(无 Prototype/jQuery)

Div 宽度 100% 减去固定数量的像素

跨浏览器兼容性宽度问题