我正在尝试以page-break-inside: avoid
使用多行 flexbox 布局(带有flex-wrap: wrap
)的形式工作。目标只是避免在打印时打断表格问题。
这适用于单行 flexbox 或没有 flexbox。查看http://jsfiddle.net/MartijnR/nSE3P/1/show/的打印预览 (注意没有应用 flexbox 类)
但是,当使用多行flexbox时,似乎忽略了page-break-inside: avoid
css规则。查看http://jsfiddle.net/MartijnR/nSE3P/2/show/的打印预览 (注意我在 section 元素中添加了 flexbox 类)
<form>
<section class="flexbox">
<label class="flex-100">
<input type="text" />
</label>
<label class="flex-100">
<input type="text" />
</label>
<!-- etc -->
<label class="flex-100">
<input type="text" />
</label>
<label class="flex-100">
<input type="text" />
</label>
</section>
</form>
body, div, article, section, label {
position: relative;
}
.flexbox {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
-moz-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-flex-direction: row;
-ms-flex-direction: row;
-moz-flex-direction: row;
flex-direction: row;
-webkit-flex: 100%;
-ms-flex: 100%;
flex: 100%;
}
label {
display: block;
margin: 10px 0;
position: relative;
}
.flex-100 {
min-height: 300px;
border: 1px solid black;
min-width: 80%;
-webkit-flex: 100%;
-ms-flex: 100%;
flex: 100%;
}
input {
display: block;
}
@media print {
label {
page-break-inside: avoid;
-webkit-region-break-inside: avoid;
}
}
我在最新的 Chrome 和 IE11 中都尝试过,并且都表现出相同的行为,这让我认为这不是浏览器错误。(FF 还不支持多行 flexbox,所以它要到明年年初才能在那里工作)
有谁知道如何让flex-wrap: wrap
flexbox 布局很好地发挥作用page-break-inside:avoid
?
PS。我知道在示例代码中使用多行 flexbox 似乎没有意义,但实际上创建网格布局对我来说确实有意义。