css - @media 打印在 Chrome 中无法正常工作

标签 css google-chrome printing media-queries

已经找到/阅读/尝试过许多关于此的答案,如果解决方案已经发布,那么很抱歉,但 Chrome 无法正确显示打印样式,缺少许多元素(但不是全部)。

事情是这样设置的。

<强>1。设置

  • 使用 @media print

  • 在主 css 文件的末尾设置打印样式
  • 加载css文件的链接没有media属性

  • 我们在所有打印样式上声明!important

  • 打印样式会在需要时覆盖屏幕样式(即屏幕样式未包装在 @media screen

  • Chrome Dev 工具中的打印仿真完美显示打印样式

  • 但是一些元素在打印(和/或打印为 PDF)时会消失

  • 如果使用文件中的打印 HTML 按钮或“打印”,则会出现问题 菜单

  • Firefox 或 Safari 中不会出现此问题


<强>2。故障排除

  • 打印样式包装在 @media only print {}

  • 所以尝试像这样删除“仅”@media print {} 但没有区别

  • 如果我像这样错误地将“only”移动到“print”之后 @media print only {}

  • 然后一些缺失的打印元素显示而其他的消失

  • 如其他地方所述,在打印样式的开头尝试了此 hack,但没有成功

    * { -webkit-transition: 无!重要; 过渡:无!重要; }


欢迎任何帮助或建议。

干杯

最佳答案

此问题是由您的主要内容容器类 presenter-notes__main-content 上的 CSS 声明 display: inline-block 引起的。

内联 block 本质上是内部的 block 元素和外部的内联元素。内联元素在打印时是牢不可破的,除非它是换行的,在这种情况下,分页只能发生在行之间。这可以防止单独的文本行被分页符水平分割,这会使打印的文档很难阅读。内联 block 从不换行(这是因为它的内容换行而不是元素本身),因此始终牢不可破。

那么,当您的元素太大而无法放在单个页面上,但又不能拆分到多个页面时,会发生什么情况?疯狂的东西,就是这样!当然,一些浏览器可能会优雅地降级并只是剪辑溢出,但其他浏览器可能会感到困惑并完全删除该元素。计算机不擅长处理悖论。

关于css - @media 打印在 Chrome 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43645477/

相关文章:

html - margin-block-start 和 margin-top 有什么区别?

python - 在 Python 中创建一个从 STDIO 读取并循环写入 STDOUT 的服务

javascript - 使用@media print {body *{visibility : hidden;}} 时消除额外空间

java - 在热敏打印机 Java 上打印

html - 使用 css 调整表单中选择标签的大小以查看所有选项标签

css - 将 jquery 脚本添加到 css

html - 隐形覆盖 DIV 阻塞悬停? +定位

jquery - 将 css 应用到对话框中的输入

css - chrome 和 firefox 之间的字体字距调整

performance - 删除 chrome devTools 中的内存缓存