打印时内联块 div 是否有效?

Do inline-block divs work when printing?

我有一个非常复杂的单页应用程序来管理数据。除其他事项外,它当然需要能够打印该数据。在大多数情况下,我掌握了从浏览器打印时实际有效和无效的方法,以及您可以使用 @page 指令在 CSS 中使用的技巧。

上周我遇到了一个问题,但我发现它有点令人费解。我正在尝试将数据打印到卡片纸上——例如,在每页 2 列乘 4 行的卡片纸上打印姓名徽章。我正在尝试使用固定端 divs 来做到这一点,其中 div 的 CSS 看起来像这样:

.badge {
  display: inline-block;
  width: 3.5in;
  height: 2.5in;
}

它在屏幕上显示良好,但当我打印它时,每个徽章都在单独的一行上出现——divs 似乎没有正确内联。边距很小,所以我认为不是问题所在。

我在这里不知所措。固定大小的内联块在打印时不起作用吗?如果相关的话,我正在使用 Chrome。我希望有可能在不诉诸于在服务器上将页面生成为 PDF 的情况下完成这项工作。

数量取决于您的屏幕尺寸。 所以当屏幕分辨率改变或打印页面有另一个尺寸时,行数和列数。 所以我建议您使用 % 作为单位而不是 in 来调整宽度和高度的大小,或者为每个分辨率制作 css 样式。或者您可以使用 HTML table tag.

因为 inline-block 只是像对待其他元素一样对待元素 "inline elements" 并允许使用块属性。它不精确有多少列和行。

这应该有效:

<style>
  .container {
    width: 7in; /* This guarantees there will be enough room for 2 badges side-by-side */
  }

  .badge {
    box-sizing: border-box; /* You only need this if you add padding or borders */
    display: inline-block;
    width: 3.5in;
    height: 2.5in;
  }
</style>

<div class="container">
  <div class="badge">
    Badge 1
  </div><div class="badge"> <!-- DO NOT put line breaks between the badge divs! -->
    Badge 2
  </div><div class="badge">
    Badge 3
  </div><div class="badge">
    Badge 4
  </div>
</div>

简而言之,7 英寸宽的容器 div 可确保您有足够的宽度并排放置两个徽章。此外,徽章 div 之间没有换行符,因为换行符会变成空格,这会阻止徽章彼此相邻。最后,我在徽章 CSS 中添加了 box-sizing: border-box 以确保如果添加边框或填充,宽度不会超过 3.5in。