css - 列跨度 : all conflicts with overflow and float

标签 css google-chrome

CSS 属性 column-span: all 似乎在 overflow: hiddenfloat: left|right 出现时立即停止工作在容器上设置:

<div>
    <h2>Spanning Header</h2>
    <p>Lorem ipsum dolor …</p>
</div>

div {
    column-count: 2;
    column-gap: 2em;
    float: left; /* or */
    overflow: hidden;
}
h2 {
    /* will not work */
    -webkit-column-span: all;
}

这是初始(工作)版本:http://jsfiddle.net/8y67gqya/
这都不行:http://jsfiddle.net/rL3m59gk/也不是这个:http://jsfiddle.net/rL3m59gk/1/

这是否有合乎逻辑的原因或解释?
还是我遗漏了什么?

编辑:此错误出现在 Google-Chrome 中而非 Safari 中……(现在无法测试 IE)

最佳答案

这是让 column-span 在 Google Chrome 中工作的一种方法。

将整个 div 包裹在 block 级容器 div.wrap 中,并对其应用 float 或 overflow 属性。

column 属性应用于子 .panel block 。

<div class="wrap">
    <div class="panel">
         <h2>Spanning Header</h2>
        <p>Lorem ipsum dolor s...</p>
    </div>
</div>

对于 CSS:

div.wrap {
    float: left;
    width: 600px;
    overflow: auto;
    border: 1px dotted blue;
}
div.panel {
    -webkit-column-count: 2;
    column-count: 2;
    -webkit-column-gap: 2em;
    column-gap: 2em;
}
h2 {
    -webkit-column-span: all;
    border: 1px dotted blue;
}

参见演示:http://jsfiddle.net/audetwebdesign/aq6gpmf4/

我认为在您的原始示例中发生的事情是,当您应用 float: leftoverflow: {hidden|auto} 时,您正在建立一个新的 block 格式化上下文,这似乎会阻止 column-span 正常工作。

我不确定为什么会这样,但最好的线索来自 Mozilla 文档页面:

https://developer.mozilla.org/en-US/docs/Web/CSS/column-span#Values

column-span: all 值为 h2 建立了一个新的 block 格式化上下文。所以我的猜测是,float: left 引起的 div 上的 block 格式化触发器干扰了 column-span: all 引起的 block 格式化触发器h2 上,因此该算法仅忽略 column-span: all 触发器。

CSS3 规范没有解决此行为的确切细节,因此我希望实现由浏览器(即设计和编写相关代码的人员)自行决定。

注意:我没有在 Safari 中检查这个,但我希望它能工作。

关于css - 列跨度 : all conflicts with overflow and float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29627696/

相关文章:

html - 简单的 block 定位

javascript - 视频游戏分数问题

css - 带边距的 Div : 0 auto preventing another Div from floating to the right of it

twitter-bootstrap - 如何限制css flex的水平拉伸(stretch)

Java 小程序在不同的 IE 版本 8+ 上崩溃,但不久前还可以工作?

javascript - 类型错误 : Cannot read property 'setZoomLevelLimits' of undefined

css - 使用 CSS 的文本轨道 mask

google-chrome - 如何查看或编辑localStorage?

javascript - 如何清空webkit中的控制台日志?

google-chrome - 为什么 Google.com 切换到 SPDY (HTTP/2+QUIC/35) 而不是 HTTP/2