html - 子元素的宽度改变了,但是父元素的宽度没有改变,为什么?

标签 html css web

reference

在这个页面中,当.gridster > ul的宽度改变时,.gridster的宽度不变。通常,父元素的宽度会随着子元素宽度的变化而变化。为什么在这种情况下保持不变。如何让父元素的宽度始终等于子元素的宽度。

最佳答案

因为.gridster是 block 级非替换元素。

10.3 Calculating widths and margins
10.3.3 Block-level, non-replaced elements in normal flow

The following constraints must hold among the used values of the other properties:

'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = width of  containing block

If 'width' is set to 'auto', any other 'auto' values become '0' and 'width' follows from the resulting equality.

在这种情况下,

  • 未设置宽度,所以它的值为初始auto
  • 水平边距设置为自动
  • 横向的border-*-style没有设置,所以它们的值是初始的none。因此水平 border-*-width 计算为 0
  • 没有设置水平填充,所以它们的值是初始的0

然后,

  • 水平边框和填充保持 0
  • 水平边距计算为 0,因为 widthauto
  • width 计算出 containing block 的宽度.

关于html - 子元素的宽度改变了,但是父元素的宽度没有改变,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852568/

相关文章:

html - 为什么内联容器的唯一子元素仍然可以换行?

html - 如何在我的浏览器新标签显示的最近使用的网站列表中控制我网站的截图

css - 什么列轴 : vertical; does?

web - 如何在 hunchentoot 中获取上传文件的创建日期?

mysql - 使用mysql工作台创建数据库

javascript - CSS 动画自动变为默认

html - 无法弄清楚 CSS 来更改 Toggle_Sidebar 背景颜色

javascript - jquery 弹出脚本需要一些调整

javascript - 如果元素具有类和特定值,则 jquery 显示内容

mysql - "Buffering"断开连接时在线表格中的数据输入( Racket )