html - Chrome 中带有子 DIV 元素的 CSS3 列

标签 html css google-chrome css-multicolumn-layout

我在使用 CSS3 列时遇到了问题,它们在 Chrome 53.0.2785 中无法按我预期的方式工作 - 它们在 Firefox 49、IE11、EDGE 38.14393 中按我预期的方式工作

我的“容器”DIV 的前两个子 DIV 在 Chrome 中显示在彼此下方,但在 Firefox 中显示在彼此旁边

HTML:

<div class="container">
  <div>
    Some content 1
  </div>
  <div>
    Some content 2
  </div>
</div>

CSS:

* {
  box-sizing: border-box;
}
.container {
  column-width: 100px;
  column-gap: 12px;
}
.container > div {
  display: inline-block;
  width: 100px;
  border: 1px solid black;
  padding: 20px;
}

在这里测试一下:https://jsfiddle.net/s7cfbqzt/3/

现在,Chrome 中发生了一些奇怪的事情:

  • 如果我只删除“display: inline-block”,Chrome 会分解 DIV(甚至边框也会被分散) - Firefox 则不会

    • 请注意,我无法在父级中设置列数(与删除内联 block 相结合似乎有点工作),因为它应该是一个流体布局。每个 DIV 的高度也是动态的,所以如果这是一个要求,我必须为此编写一些 JS(但我更希望在没有 JS 的情况下使其工作)。
  • 如果我删除边框大小和子 DIV 的所有属性,它会按预期工作,但是一旦我开始用一些其他内容填充内部 DIV(可能有边框、填充或框阴影) ,又断了

如果我添加第三个子 DIV

<div>Some content 3</div>

Chrome 中会有列,但显示为

1..3
2

第四个 DIV 将显示在 DIV3 下方,第五个 DIV 再次显示在第一“行”中。

1..3..5
2..4

这是 Chrome 中的错误还是我做错了什么?

最佳答案

Chrome 实际上可能是唯一正确执行此操作的浏览器:

https://drafts.csswg.org/css-break/#widows-orphans

Name:   orphans, widows
Value:  <integer>
Initial:    2

IE 11、EDGE 和 Firefox (49)(还没有?)支持寡妇和孤儿,尽管http://caniuse.com/#feat=css-widows-orphans声称 IE11 和 EDGE 确实支持它 - 请参阅 https://jsfiddle.net/s7cfbqzt/13/在 IE11 和 EDGE 中。如果 IE 和 EDGE 实际上支持它,他们会将初始值设置为 1 而不是 2。

针对我的用例的修复是添加

orphans: 1;
widows: 1;

CSS 中的容器类。

感谢@Jay 花时间调查此问题!

关于html - Chrome 中带有子 DIV 元素的 CSS3 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40547692/

相关文章:

javascript - 如何在 jquery 中向 $(window).resize 事件添加 if 条件?

html - 试图创建一个只有 css 和 html 的下拉菜单

CSS Div,需要它在 Firefox 和 Safari 中工作

css - ckeditor - 如何让带有 id 的自定义 css 工作?

html - 和空间有什么区别?

php - PHP/MYSQL 下拉列表显示正确项目信息时出现错误

javascript - 增加标题栏和其他元素的宽度以覆盖整个 JQuery 对话框

javascript - 在除元素之外的 body 上应用模糊

javascript - 缩小尺寸的图像在 Chrome 中运行缓慢

css - 背景中的 Flash 电影和 Chrome 中固定的位置 => 不良行为