【问题标题】:Print css styles do not apply in angular project打印 css 样式不适用于 Angular 项目
【发布时间】:2019-08-28 13:26:01
【问题描述】:

我正在尝试在我的 Angular 项目中使用 CSS 创建一个可打印的文档。 对于运行到多个页面的打印文档,我需要自动避免在标题中打印日期和标题。同时我想确保打印的文档有一些边距。为了实现这一点,我使用了 SO 上this answer 中建议的方法。但是我无法应用样式。

我的 CSS 代码如下所示

@media print {
  @page { 
    size: auto;
    margin: 0; 
  }
  body { 
    margin: 2cm !important;
  }
}

我已尝试将此代码粘贴到 app.component.scss 文件和 styles.scss 文件中。这两种方法似乎都不起作用。有什么建议吗?

【问题讨论】:

标签: css angular printing


【解决方案1】:

您需要将以下 css 放入您的 styles.css 文件中

@media print {
  @page { 
    size: auto;
    margin: 0mm; // added mm
  }
  body { 
    margin: 2cm;
  }
}

如果您需要特定于组件的样式,您也可以将其添加到组件的 css 文件中:

@media print {
  section {
    color: orange;
  }
}

这是Stackblitz example。 您也可以尝试打印此页面(https://angular-j4ab2g.stackblitz.io),您会看到标题中的日期已经消失,而我的自定义部分有橙色文本。

编辑

我认为删除页脚和页眉的最佳选择是取消选中打印设置中的复选框

那么你就不需要给@page选择器加上0mm的边距,在body选择器上加2cm的边距了。

【讨论】:

  • 谢谢 - 我试过了 - 但是上边距似乎只适用于第一页,而我在第二页上没有边距。请看截图imgur.com/a/sOcJ870
  • 我更新了我的答案,你也应该使用page-break-*-selectors。看看 Rachel Andrew 的这篇文章:smashingmagazine.com/2018/05/print-stylesheets-in-2018
  • 感谢@John - 知道隐藏页眉和页脚的选项,不幸的是,要求默认隐藏边距......无需用户操作。我还检查了page-break-* 属性。虽然这些似乎有助于在元素或类之后引入break,但在我的情况下,由于页面高度而不是因为元素或类而引入了中断,但我也不清楚@987654332 如何休息后@可以用来强制margin吗?
  • 我认为无法隐藏页脚和页眉(不使用 @Page 上的 0mm 边距选项)。因此,如果您在所有其他页面上都需要边距,我最好的猜测是在某些元素上使用分页规则,并为这些元素添加边距(用于打印)。也许你可以在你的html中添加一个
    ,然后添加page-break-before:always
猜你喜欢
  • 1970-01-01
  • 2014-05-02
  • 2018-06-02
  • 2017-11-18
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
相关资源
最近更新 更多