好吧,我认为我的CSS技能终于达到了我不需要问这些问题的程度,但是......
我在父div中有三个子div。我希望它们全部显示在同一条线上,每条线占据父母宽度的33%。正如你在我的小提琴中所看到的,那不是正在发生的事情。我做错了什么?
小提琴:http://jsfiddle.net/9nmCC/
HTML
<div id="parent-div">
<div id="div1" class="child-div">
<p>Div 1</p>
</div>
<div id="div2" class="child-div">
<h4>Div 2</h4>
</div>
<div id="div3" class="child-div">
<h4>Div 3</h4>
</div>
</div>
CSS
#parent-div {
background: #555;
}
#div1 {
float: left; /* Commenting this out results in another weird result*/
width: 33%;
padding: 10px;
display: inline-block;
background: blue;
box-sizing: border-box;
}
#div2 {
width:33%;
padding:10px;
display: inline-block;
background: red;
box-sizing: border-box;
}
#div3 {
width: 33%;
padding: 10px;
box-sizing: border-box;
background: green;
display: inline-block;
}
.child-div {
/*overflow: hidden;*/
}
答案 0 :(得分:0)
答案 1 :(得分:0)
最好使用float: left
代替inline:block
。否则,div之间的空格会导致间距问题。
#div1 {
float: left; /* Commenting this out results in another weird result*/
width: 33%;
padding: 10px;
background: blue;
box-sizing: border-box;
}
#div2 {
width:33%;
padding:10px;
float:left;
background: red;
box-sizing: border-box;
}
#div3 {
width: 33%;
padding: 10px;
box-sizing: border-box;
background: green;
float:left;
}
答案 2 :(得分:0)
p
代码和h4
代码的默认保证金。如果您设置margin: 0
(并相应调整),您会看到所有方框都是内联的。同时将所有内容更改为float:left
,因为inline-block
在框之间提供了间隔符。请注意,当您浮动元素时,您需要清除它们。您可以使用clearfix来执行此操作
p{
margin: 0
}
h4{
margin:0
}
答案 3 :(得分:0)
您需要删除填充,因为它会添加到框的宽度,从而使其宽度超过33%并且会突破到下一行。
此外,您需要将float: left;
添加到div2
和div3
。
无需display
和box-sizing
答案 4 :(得分:0)
或者您仍然可以在父元素上使用inline-block
与font-size:0
一起使用,以消除此display
值造成的差距:点击此处:http://jsfiddle.net/9nmCC/10/
答案 5 :(得分:0)
没有主要问题是您使用的百分比宽度为33%,填充为px。
每个div使用27%并为每个div填充3%,这样你将得到27%+ 3%+ 3% - 并且完整的div宽度将为33%
例如:
#div1 {
width: 27%;
padding: 3%;
}
样本: http://jsfiddle.net/darkosss/mL93f/
如果您仍然需要在px中填充,则需要在每个中插入另一个div并为其添加填充。
答案 6 :(得分:0)
不,伙计们,真正抛弃OP代码的是应用填充,因为这会改变添加填充的对象的宽度。
如果你从div中取出填充物,你可以看到一切都排好了。
如果你想在浮动元素内的项目周围增加间距,你必须给出内容边距,如下例所示:
老实说,你也应该把你的大多数常见规格放到你的班级(.child-div)而不是在每个id-spec中重复它:
#parent-div {
background: #555;
overflow:hidden;
}
.child-div {
float: left; /* Commenting this out results in another weird result*/
width: 33%;
display: inline-block;
box-sizing: border-box;
}
.child-div p, .child-div h4 {
margin:10px;
}
#div1 {
background: blue;
}
#div2 {
background: red;
}
#div3 {
background: green;
}
这可以避免重复,在基于类的结构中保持一致,并且只更改每个ID必须特定的项。 (http://jsfiddle.net/dGC8u/7/)
最后,overflow:hidden
需要位于你的浮点数周围的包含元素上,或者它没有你正在寻找的技巧(包含它的子元素)。