为什么第二个body div 和第一个body div 不对齐?
Why does the second body div not line up with the first body div?
为什么 rowDiv 文本没有与 ColumnDiv 文本左对齐,我该如何解决?
<div id="d1">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
</div>
<div id="d4" style="overflow: hidden;">rowDiv</div>
这是我正在使用的简化版本,因此我无法 remove/change 任何现有样式。我可以添加 classes/styles 和 HTML 元素。
只要有空间,浮动对象就会从左到右(或从右到左)堆叠。元素只会尝试绕过它们。如果您想确保您的元素位于任何浮动元素下方,您需要使用 clear
属性:
清除它们
<div id="d1">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
</div>
<div id="d4" style="overflow: hidden; clear: left;">rowDiv</div>
Will Reese 建议的方法会起作用,但正确的方法是清除父项中的浮动子项。
有几种方法可以做到这一点。
第一个选项(在父容器内部添加一个clearing div。应该是关闭前的最后一个元素标签 - 参见 DIV #D5):
<div id="d1">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
<DIV ID="D5" STYLE="HEIGHT:1px; OVERFLOW: HIDDEN; CLEAR: BOTH;"></DIV>
</div>
<div id="d4" style="overflow: hidden;">rowDiv</div>
第二个选项: 将清除 CSS 属性添加到 #d1
#d1 {
*zoom: 1; /*IE7 < hack */
clear: both;
/* Add your styling below. For example:*/
background-color: red;
margin-bottom: 20px;
/*etc, etc...*/
}
#d1:before,
#d1:after {
content: " ";
display: table;
}
#d1:after {
clear: both;
}
第三个选项 - 在我看来是最好的,因为它可以重复使用: 创建一个 .clear class 并将其添加到您想要 "self clear".
的容器
<div id="d1" CLASS="clear">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
</div>
<div id="d4" style="overflow: hidden;">rowDiv</div>
.clear {
*zoom: 1; /*IE7 < hack */
clear: both;
}
.clear:before,
.clear:after {
content: " ";
display: table;
}
.clear:after {
clear: both;
}
为什么 rowDiv 文本没有与 ColumnDiv 文本左对齐,我该如何解决?
<div id="d1">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
</div>
<div id="d4" style="overflow: hidden;">rowDiv</div>
这是我正在使用的简化版本,因此我无法 remove/change 任何现有样式。我可以添加 classes/styles 和 HTML 元素。
只要有空间,浮动对象就会从左到右(或从右到左)堆叠。元素只会尝试绕过它们。如果您想确保您的元素位于任何浮动元素下方,您需要使用 clear
属性:
<div id="d1">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
</div>
<div id="d4" style="overflow: hidden; clear: left;">rowDiv</div>
Will Reese 建议的方法会起作用,但正确的方法是清除父项中的浮动子项。
有几种方法可以做到这一点。
第一个选项(在父容器内部添加一个clearing div。应该是关闭前的最后一个元素标签 - 参见 DIV #D5):
<div id="d1">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
<DIV ID="D5" STYLE="HEIGHT:1px; OVERFLOW: HIDDEN; CLEAR: BOTH;"></DIV>
</div>
<div id="d4" style="overflow: hidden;">rowDiv</div>
第二个选项: 将清除 CSS 属性添加到 #d1
#d1 {
*zoom: 1; /*IE7 < hack */
clear: both;
/* Add your styling below. For example:*/
background-color: red;
margin-bottom: 20px;
/*etc, etc...*/
}
#d1:before,
#d1:after {
content: " ";
display: table;
}
#d1:after {
clear: both;
}
第三个选项 - 在我看来是最好的,因为它可以重复使用: 创建一个 .clear class 并将其添加到您想要 "self clear".
的容器<div id="d1" CLASS="clear">
<div id="d2" style="float: left;">
<div id="d3" style="font-weight: bold; height: 20px; overflow: hidden;">
ColumnDiv
</div>
</div>
test text
</div>
<div id="d4" style="overflow: hidden;">rowDiv</div>
.clear {
*zoom: 1; /*IE7 < hack */
clear: both;
}
.clear:before,
.clear:after {
content: " ";
display: table;
}
.clear:after {
clear: both;
}