html - 为什么 CSS float 不遵循 CSS3 列?

标签 html css

我在 CSS3 列布局中有一些 float:left div。 div 并不总是遵守列宽属性。参见示例:http://jsfiddle.net/upzkeLxc/

HTML:

<div class='container'>
    <div class='content w1 h1 c1'><span>One</span></div>
    <div class='content w3 h3 c2'><span>Two</span></div>
    <div class='content w3 h3 c3'><span>Three</span></div>
    <div class='content w3 h3 c4'><span>Four</span></div>
    <div class='content w1 h3 c5'><span>Five</span></div>
    <div class='content w2 h2 c6'><span>Six</span></div>
    <div class='content w2 h2 c7'><span>Seven</span></div>
    <div class='content w2 h2 c8'><span>Eight</span></div>
</div>

CSS:

.c1 { background-color: red; }
.c2 { background-color: green; }
.c3 { background-color: blue; }
.c4 { background-color: yellow; }
.c5 { background-color: magenta; }
.c6 { background-color: cyan; }
.c7 { background-color: wheat; }
.c8 { background-color: rose; }

.w1 { width: 240px; }
.w2 { width: 120px; }
.w3 { width: 80px; }

.h1 { height: 240px; }
.h2 { height: 120px; }
.h3 { height: 80px; }

.container, .content {
    padding:0; margin:0;
}

.container {
    -webkit-column-width: 240px;
    -moz-column-width: 240px;
    column-width: 240px;
    -webkit-column-gap: 0;
    -moz-column-gap: 0;
    column-gap: 0;

}

.content {
    float: left;
    display: flex;
    align-content:center;
    align-items: center;
    -webkit-column-break-inside: avoid;
    -moz-column-break-inside: avoid;
    column-break-inside: avoid;
}

这是 Google Chrome 上的结果截图(在一定宽度下):

Floating divs inside CSS column layout

列宽应该是红色“一”方 block 的宽度,但“二”、“三”、“四”最终并排,我认为它们应该在下方。

有没有人有任何 CSS 魔术的想法,可以使这些框遵守列宽?

最佳答案

我猜这是由于列尚未最终确定或完全实现所致。

这里有一个可以解决这个问题的修复程序......

在 html 中添加一个额外的包装器:

<div class='container'>
    <div class='content-wrapper'>
        <div class='content w1 h1 c1'><span>One</span></div>
        <div class='content w3 h3 c2'><span>Two</span></div>
        <div class='content w3 h3 c3'><span>Three</span></div>
        <div class='content w3 h3 c4'><span>Four</span></div>
        <div class='content w1 h3 c5'><span>Five</span></div>
        <div class='content w2 h2 c6'><span>Six</span></div>
        <div class='content w2 h2 c7'><span>Seven</span></div>
        <div class='content w2 h2 c8'><span>Eight</span></div>
    </div>
</div>

将该包装的宽度设置为您的列的宽度:

.content-wrapper {
    width: 240px;
}

说明 - 额外的包装器会强制执行您需要的宽度限制,但它本身仍应遵守列流规则。

关于html - 为什么 CSS float 不遵循 CSS3 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117829/

相关文章:

html - 使 bootstrap 中的表格扩展到页面的全高

html - 带有选择标签的 Bootstrap 内联表单

css - tablesorter中bootstrap主题有less文件吗?

jquery - 鼠标 x 移动动画

javascript - 什么是使用 html-php 的母版页

javascript - 无法为盒子设置纹理(html5/js/babylon.js)

jquery - 带有编辑操作子菜单的导航菜单

javascript - 如何使用 Javascript、CSS 和 HTML 加速移动设备的滑动和滚动?

html - 响应式网页缩小以适应 iOS 上的整个页面

html - 如何使用 flexbox 实现复杂的响应式 HTML 布局?