Html 为什么浮动和填充组合会导致元素通过边距?

Html 为什么浮动和填充组合会导致元素通过边距?,html,css,css-float,Html,Css,Css Float,我有一个有三行的页脚。第一排是两个向左浮动的div。第二行是一条“分隔线”,宽度为页脚的100倍。第三行将有3个以上的div向左浮动 问题在第一排。我有一个页边距上限:40px用于中间行。第一个浮动元素应该位于顶部,但第二个浮动元素(它将是一个文本框,内部有填充)位于顶部,没有填充,但当我放入10px填充时,它应该位于40px上方,但为周围的元素添加了额外的边距 .footer{ 背景色:#172135; 填充:40px; } .页脚链接{ 保证金:0px自动0px自动; 浮动:左; } .

我有一个有三行的页脚。第一排是两个向左浮动的div。第二行是一条“分隔线”,宽度为页脚的100倍。第三行将有3个以上的div向左浮动

问题在第一排。我有一个
页边距上限:40px用于中间行。第一个浮动元素应该位于顶部,但第二个浮动元素(它将是一个文本框,内部有填充)位于顶部,没有填充,但当我放入10px填充时,它应该位于40px上方,但为周围的元素添加了额外的边距

.footer{
背景色:#172135;
填充:40px;
}
.页脚链接{
保证金:0px自动0px自动;
浮动:左;
}
.中线{
宽度:100%;
边框:1px实心#1889b4;
填充:0;
边缘顶端:40px;
}
.通讯{
填充:10px;
边框:1px实心#188ab4;
宽度:300px;
字体系列:“rBblack”;
字体大小:12px;
颜色:白色;
文本转换:大写;
浮动:左;
}

东西
注册我们的时事通讯
更多的东西

除非您告诉它,否则浏览器会将元素设置为您指定的宽度,然后添加填充等

如果设置边框大小属性,这将防止其发生

box-sizing: border-box;

尝试将其添加到CSS声明中

除非您告诉它,否则浏览器将使元素达到您指定的宽度,然后添加填充等

如果设置边框大小属性,这将防止其发生

box-sizing: border-box;

尝试将其添加到CSS声明中

除非您告诉它,否则浏览器将使元素达到您指定的宽度,然后添加填充等

如果设置边框大小属性,这将防止其发生

box-sizing: border-box;

尝试将其添加到CSS声明中

除非您告诉它,否则浏览器将使元素达到您指定的宽度,然后添加填充等

如果设置边框大小属性,这将防止其发生

box-sizing: border-box;

试着把它添加到你的CSS声明中

在回顾了你对我以前的、现在完全不相关的答案所说的话之后,我想我找到了你的问题所在

padding:10px;
向所有4个边添加填充。它在功能上等同于

padding: 10px 10px 10px 10px;
时事通讯div现在明显高于同一div中的其他内容,浏览器被迫通过使容器div变大来进行补偿。当您这样做时,container div的高度增加了20个像素,这似乎为其他元素添加了额外的边距

若要删除此项,您可能希望使用其中一项

padding: 0 10px;
padding: 0 10px 0 10px;
依照 这两个选项中的任何一个都将在左右两侧添加等于10px的填充,但顶部和底部将保持为0。时事通讯div将不再过大,使container div变大,这将使其他部分看起来有余量。 编辑(其他选项): 但是,如果要保留顶部和底部填充,则有3个主要选项

1) 将填充添加到父级以及新闻稿中的其他div。他们将与时事通讯排成一行,在上面和下面都有额外的空间。您可能希望缩小中间div的高度以补偿增加的高度。 2) 要将新闻稿从其父div中完全删除,请设置新闻稿及其父div的宽度,使其加起来等于100%,包括填充和边框,或者使用“框大小:边框框”,并向左浮动,以便它们水平对齐。现在你可以把时事通讯做成你想要的大小,而不会影响其他人。
3) 您可以固定父div的高度,以便新闻稿可以比其父div大,但是如果您不小心,这可能会导致布局问题,因为它可能会重叠。

在回顾您对我以前的、现在完全不相关的答案所说的话后,我想我找到了您的问题所在

padding:10px;
向所有4个边添加填充。它在功能上等同于

padding: 10px 10px 10px 10px;
时事通讯div现在明显高于同一div中的其他内容,浏览器被迫通过使容器div变大来进行补偿。当您这样做时,container div的高度增加了20个像素,这似乎为其他元素添加了额外的边距

若要删除此项,您可能希望使用其中一项

padding: 0 10px;
padding: 0 10px 0 10px;
依照 这两个选项中的任何一个都将在左右两侧添加等于10px的填充,但顶部和底部将保持为0。时事通讯div将不再过大,使container div变大,这将使其他部分看起来有余量。 编辑(其他选项): 但是,如果要保留顶部和底部填充,则有3个主要选项

1) 将填充添加到父级以及新闻稿中的其他div。他们将与时事通讯排成一行,在上面和下面都有额外的空间。您可能希望缩小中间div的高度以补偿增加的高度。 2) 要将新闻稿从其父div中完全删除,请设置新闻稿及其父div的宽度,使其加起来等于100%,包括填充和边框,或者使用“框大小:边框框”,并向左浮动,以便它们水平对齐。现在你可以把时事通讯做成你想要的大小,而不会影响其他人。
3) 您可以固定父div的高度,以便新闻稿可以比其父div大,但是如果您不小心,这可能会导致布局问题,因为它可能会重叠。

在回顾您对我以前的、现在完全不相关的答案所说的话后,我想我找到了您的问题所在

padding:10px;
向所有4个边添加填充。它在功能上等同于

padding: 10px 10px 10px 10px;
时事通讯div现在明显高于同一div中的其他内容,浏览器被迫通过使容器div变大来进行补偿。容器