gpt4 book ai didi

html - 为什么左栏 "push"右栏的内容?

转载 作者:可可西里 更新时间:2023-11-01 13:30:59 24 4
gpt4 key购买 nike

我实现了一种固定的、一种流动的列布局,但我不知道为什么左列(关于高度)“将我的部分内容向下推”。

.profile-left-column {
width: 105px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0 15px;
float: left;
height: 500px;
background: #ddd;
}
.profile-right-column {
margin-left: 105px;
padding: 0 15px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.container {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
max-width: 1265px;
margin: 0 auto;
padding-left: 20px;
padding-right: 20px;
}
.clearfix:after {
content:"";
display: block;
height: 0;
width: 100%;
clear: both;
}
.gc:after {
content:"";
display: block;
height: 0;
clear: both;
}
.gcpad {
margin-left: -10px;
margin-right: -10px;
}
.g1_4 {
width: 25%;
float: left;
margin-left: 0;
margin-right: 0;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
min-height: 20px;
background: #66f;
}
.gpad {
padding: 0 10px;
}
<div class="profile-left-column"></div>

<div class="profile-right-column">
<div>
<div class="gc gcpad">
<div class="g1_4 gpad"></div>
<div class="g1_4 gpad"></div>
<div class="g1_4 gpad"></div>
<div class="g1_4 gpad"></div>
</div>
<div class="gc gcpad">
<div class="g1_4 gpad"></div>
<div class="g1_4 gpad"></div>
<div class="g1_4 gpad"></div>
<div class="g1_4 gpad"></div>
</div>
</div>
</div>

这是一个 JSFiddle:http://jsfiddle.net/v3gma4d2/1/ (这两个蓝条应该在自己的正下方)

有人能解释一下为什么会发生这样的事情吗?以及如何解决问题?

最佳答案

当你将一个元素设置为 float 时, float 元素之后的元素将围绕它流动。想象一下,我们通常 float 图像,图像旁边的文本(足够多行)甚至在图像下方。

你有类似的情况,你将左列设置为 float ,右列实际上围绕它流动,一旦clearfix添加,这一切立即中断。请参阅下面的简单演示。

.left {
float: left;
width: 100px;
height: 100px;
border: 1px solid red;
}
.right {
border: 1px solid green;
}
.inner {
border: 1px solid blue;
}
.inner:after {
content: "";
display: block;
clear: both;
}
<div class="left">1</div>
<div class="right">
2
<div class="inner">3</div>
4
</div>

解决问题。您可以将右列设置为 overflow:autohidden,以防止它在左列下方换行。

.left {
float: left;
width: 100px;
height: 100px;
border: 1px solid red;
}
.right {
border: 1px solid green;
overflow: auto; /*ADDED*/
}
.inner {
border: 1px solid blue;
}
.inner:after {
content: "";
display: block;
clear: both;
}
<div class="left">1</div>
<div class="right">
2
<div class="inner">3</div>
4
</div>

或者,设置右边的列也 float (你还需要给它一个固定的或百分比的widthcalc() CSS函数可以很在这种情况下很有用。)。

* { box-sizing: border-box; }
.left {
float: left;
width: 100px;
height: 100px;
border: 1px solid red;
}
.right {
float: left; /*ADDED*/
width: calc(100% - 100px); /*ADDED*/
border: 1px solid green;
}
.inner {
border: 1px solid blue;
}
.inner:after {
content: "";
display: block;
clear: both;
}
<div class="left">1</div>
<div class="right">
2
<div class="inner">3</div>
4
</div>

关于html - 为什么左栏 "push"右栏的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com