html - 闯入:避免-第一个元素(IE,Edge,Firefox)忽略CSS

标签 html css

最近,我遇到了一个问题。如果我在page-break: avoid中使用column-count: 2;(以及相应的浏览器规范前缀),则第一个元素失败。

HTML代码

<div class="outer" style="margin: 40px auto; width: 500px; border: 1px dotted black">
    <!-- <div class="inner"></div> -->
    <div class="inner" style="background-color: #FFCCCC">
      This is a rather long text to break into three separate lines, but sometimes won't stay in one column
    </div> 
    <div class="inner" style="background-color: #CCFFCC">
      Should be in next column
    </div>
</div>


CSS代码

.outer {
    -moz-column-count: 2;
    -webkit-column-count: 2;
    column-count: 2;
    -webkit-column-gap: 2em;
    -moz-column-gap: 2em;
    column-gap: 2em;
}
.inner {
  /* overflow: hidden; */
  border: 1px solid #6666FF;
  margin: 0.5em 0;
  -webkit-column-break-inside: avoid;
  break-inside: avoid;
  page-break-inside: avoid;
}


小提琴

https://jsfiddle.net/6s7843ue/6/

反修补程序1:当另一个元素位于损坏的框之前(在HTML代码中未注释)时,该框不会分为两列。但是,我不能这样做,因为在某些情况下,将只有一个内部元素,并且该元素将被放置在右侧,之前是另一个<div>

反修正2:如果我通过overflow: hidden给内部元素一个新的块渲染上下文,它将起作用。但是,我无法做到这一点,因为我在内部元素中使用了工具提示,并且这些元素绝对定位为<div>,大于内部元素。

反修正3:而且,我不能在我的情况下使用display: flex,因为内部元素的长度是变化的,并且它们之间必须一个接一个。设置width: 100%不能解决该问题-这很愚蠢,因为我想要块。

反修正4:我考虑设置display: table,但在实际情况下,我需要display: flex作为内部元素。即使我在<div>中放入另一个<div>,我也担心在页面上使用50个表元素可能会导致进一步的副作用...

简而言之:为什么page-break: avoid在第一个元素上失败?它适用于Ubuntu 45下的Firefox 45,但不适用于Windows。而且它在IE和Edge中无法运行,但在Chrome中可以正常运行。

更重要的是:是否有一种解决方案不会在我的HTML或CSS代码中造成严重混乱?

最佳答案

参见:https://jsfiddle.net/shain/6s7843ue/9/
在IE,Edge中不起作用。

.inner {
      /* overflow: hidden; */
      border: 1px solid #6666FF;
      display: flex;
      flex-direction: column;
      -webkit-column-break-inside: avoid;
      break-inside: avoid;
      page-break-inside: avoid;
    }

关于html - 闯入:避免-第一个元素(IE,Edge,Firefox)忽略CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37012539/

相关文章:

javascript - HTML5 基本拖放不适用于 FF 中的输入按钮

javascript - HTML5 捕捉旋转和平移后的绝对位置

html - Bootstrap - 将元素 B 置于元素 A 下方

javascript - onclick 将多个 div 作为图像保存到一个 zip 文件中

html - 当父级已经使用 flex 来调整内容时,使用 flexbox 使用等高的 css 类

html - CSS 子选择器 (>) 不适用于 IE

php - 使用 PHP MySQL 打印包含图像的水平表格

html - 使用 CSS 组合器为元素创建 "filter"

跨浏览器的 CSS 定位不一致

css - Bootstrap Dropdowns 按钮不适用于 Angular 8 组件