Html 带有子DIV元素的镀铬CSS3列
我在使用CSS3列时遇到了问题,它们不像我在Chrome53.0.2785中预期的那样工作-它们像我在Firefox49、IE11、EDGE 38.14393中预期的那样工作 我的“container”DIV的前两个子DIV在Chrome中显示在彼此下面,但在Firefox中显示在彼此旁边 HTML: 在这里测试它: 现在,Chrome中发生了一些奇怪的事情:Html 带有子DIV元素的镀铬CSS3列,html,css,google-chrome,css-multicolumn-layout,Html,Css,Google Chrome,Css Multicolumn Layout,我在使用CSS3列时遇到了问题,它们不像我在Chrome53.0.2785中预期的那样工作-它们像我在Firefox49、IE11、EDGE 38.14393中预期的那样工作 我的“container”DIV的前两个子DIV在Chrome中显示在彼此下面,但在Firefox中显示在彼此旁边 HTML: 在这里测试它: 现在,Chrome中发生了一些奇怪的事情: 如果我只删除“display:inline block”,Chrome会分解div(甚至边框也会被分发),Firefox不会 请注意
- 如果我只删除“display:inline block”,Chrome会分解div(甚至边框也会被分发),Firefox不会
- 请注意,我不能在父级中设置列计数(这与删除内联块似乎有点关系),因为它应该是一个流体布局。每个DIV的高度也是动态的,所以如果这是一个要求,我就必须为此编写一些JS(但是我更喜欢在没有JS的情况下工作)
- 如果我删除边框大小和子div的所有属性,它将按预期工作,但一旦我开始用其他内容填充内部div(可能有边框、填充或框阴影),它将再次中断
<div>Some content 3</div>
第四个DIV将显示在DIV3下面,第五个DIV将再次显示在第一行
这是Chrome中的错误还是我做错了什么?您可以通过在容器中浮动div来实现这一点,您还需要浮动它们的容器,否则它们将无法正确显示
* {
box-sizing: border-box;
}
.container {
column-width: 100px;
column-gap: 12px;
float: left;
}
.container > div {
display: inline-block;
width: 100px;
border: 1px solid black;
padding: 20px;
float: left;
}
编辑:
然后,我将对容器中的每个div应用左边距,而不是使用列间距。就这样,
.container {
width: 100%;
float: left;
}
.container > div {
width: 100px;
border: 1px solid black;
padding: 20px;
float: left;
margin-left: 12px;
}
.container > div:first-child {
margin-left: 0;
}
编辑:
如果高度不需要匹配-从container div中删除列宽。请参阅Chrome实际上可能是正确执行此操作的浏览器: 到CSS中的容器类
感谢@Jay花时间来调查此事 谢谢,不幸的是,这并没有真正起作用,请看在Chrome中(有或没有框大小),它确实起作用,直到添加了额外的内容,让我重新设计样式。等一下,我会相应地更新我的答案。我是否正确地假设你希望这些盒子都有相同的高度?谢谢你的第二次编辑-也许我在最初的问题中太不具体了。使用display:table也不是一个选项,因为它不会将任何DIV拆分为第二行(在jsfiddle中调整列的大小)。div具有动态内容,高度不同。一般来说,列布局效果最好,但“仅”在IE、Firefox和EDGE中,而不是在Chrome或基于Chrome的浏览器中。我将再次查看flex box,我记得也有一个问题,但我手头没有示例。高度是否需要匹配?很抱歉,我将以前的评论发送到了early,请参阅更新的评论(我还不熟悉堆栈溢出,并尝试在注释中插入换行符,我想这是不可能的,因为它只是提交注释?)
1..3
2
1..3..5
2..4
* {
box-sizing: border-box;
}
.container {
column-width: 100px;
column-gap: 12px;
float: left;
}
.container > div {
display: inline-block;
width: 100px;
border: 1px solid black;
padding: 20px;
float: left;
}
.container {
width: 100%;
float: left;
}
.container > div {
width: 100px;
border: 1px solid black;
padding: 20px;
float: left;
margin-left: 12px;
}
.container > div:first-child {
margin-left: 0;
}
Name: orphans, widows
Value: <integer>
Initial: 2
orphans: 1;
widows: 1;