这是我在容器右侧使用非常有用的第二个问题twitter-bootstrap
,但是这一次,我已经能够在 jsFiddle 上重现它!
这是链接,正如您在 CSS 窗口中看到的那样,我在 div 上应用 apadding-left
和 a padding-right
,左侧使 div 越过右侧的父级,如果我只应用 a padding-right
,我得到相同的结果。
我无法理解这种行为,这可能是我在另一个项目中遇到的相同问题,如何避免这种情况?
这是我在容器右侧使用非常有用的第二个问题twitter-bootstrap
,但是这一次,我已经能够在 jsFiddle 上重现它!
这是链接,正如您在 CSS 窗口中看到的那样,我在 div 上应用 apadding-left
和 a padding-right
,左侧使 div 越过右侧的父级,如果我只应用 a padding-right
,我得到相同的结果。
我无法理解这种行为,这可能是我在另一个项目中遇到的相同问题,如何避免这种情况?
这是一个工作示例
您所要做的就是指定一个宽度。我添加了一个边框只是为了查看 div。
#child {
width: auto;
border: 1px solid red;
padding-left: 50px;
padding-right: 50px;
}
您观察到的行为源于两个事实:首先,Bootstrap 行设置为width: 100%
. 其次,他们使用默认的 box-sizing 值,content-box
.
Box-sizing 是决定如何计算块元素宽度的属性。当它设置为 content-box 时,它只考虑内容的宽度,而不考虑边距、填充或边框。接下来是您设置的填充添加到总宽度中,使其大于 100%,并使其超出父项。
对于您想要设置为的box-sizing
行为padding-box
。这会导致元素的计算宽度包括填充。
#child {
...
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box;
}
有关 box-sizing 属性的更多信息,我推荐两个很棒的 CSS 资源:Chris Coyier 的CSS Tricks和MDN。