有人告诉我以下代码有什么问题。
.middle
上的左边距和上边距不起作用。
我工作了很多,但是下面的代码没有发现任何问题。
请注意.middle
课程以及div
应用的.middle
。
.container {
height: 48px;
width: 80%;
background-color: #999;
margin: 0 auto;
}
.left {
margin-left: 6px;
height: 40px;
background-color: red;
margin-top: 4px;
float: left;
overflow: hidden;
width: 30%;
}
.middle {
margin-left: 6px;
height: 40px;
background-color: green;
margin-top: 4px;
overflow: hidden;
width: auto;
}
.right {
margin-left: 6px;
height: 40px;
background-color: blue;
margin-top: 4px;
margin-right: 6px;
float: right;
overflow: hidden;
width: 40%;
}
.button {
float: right;
margin-right: 6px;
height: 32px;
width: 100px;
border-style: solid;
border-width: 1px;
margin-top: 4px;
border-color: #333;
}
p {
color: blue;
overflow: hidden;
width: 50%;
}

<div class="container">
<div class="right">
<button class="button">Search</button>
</div>
<div class="left"></div>
<div class="middle"></div>
</div>
&#13;
答案 0 :(得分:2)
这主要是由于折叠边距。
关于上边距,实际上它仍然存在,但它正在溢出.container
。要修复将overflow: auto;
添加到.container
以停止边距折叠的问题。
第二个原因是.left
被浮动。要将margin
添加到.middle
的左侧,您可以:
calc(30% + 12px)
((width
的{{1}})+ .left
的{{1}}} + margin
.left
))margin
添加到.middle
,因为浮动元素margin-right: 6px;
不会崩溃感谢@Alohci提供此建议
.left
&#13;
margin
&#13;
答案 1 :(得分:0)
好像你没有为中间div设置width
和float
。一个解决方法是添加位置:相对并将margin-top
和margin-left
替换为top
和left
。
答案 2 :(得分:0)
你需要提到宽度,一些时间宽度自动不起作用,也给float:left;财产到中间div。 你可以像div,midile和right那样对div进行编码
<div class="left"> </div>
<div class="middle"> </div>
<div class="right"> </div>
答案 3 :(得分:0)
只需将 float:left 添加到中间元素,将设置 宽度添加到值。
但是在这里我想你希望这个div能够占用它所能达到的所有宽度,对吗?
我认为是时候使用 flexbox 了: http://jsfiddle.net/w16cq27x/
.container {
height: 48px;
width: 80%;
background-color: #999;
margin: 0 auto;
display:flex;
}