【问题标题】:How to define the printable area of a react page?如何定义反应页面的可打印区域?
【发布时间】:2020-03-03 08:48:26
【问题描述】:

我在使用 react-admin 制作的 Web 应用程序的内容区域中呈现了一个复杂的表单。

表单应该是可打印的,没有导航元素、页眉等。只有内容区域。要打印的内容的外部容器如下所示:

<div className="printcontainer" id="print_content">
   <LotsOfFancyReactStuff />
</div>

这是一个反应 div 不是 html div

有没有办法用 CSS 或其他方式定义页面的可打印区域?

现在在 chrome 中查看打印预览时,只会打印导航。内容区域根本不会打印。由于我在页面上有一个打印按钮,因此用于打印的 Javascript 函数或反应组件也可以。
不幸的是,由于现代浏览器的安全限制,我不能只打开一个弹出窗口并将容器div 的内容写入其中。

【问题讨论】:

    标签: javascript css reactjs react-admin


    【解决方案1】:

    打印媒体查询

    将印刷媒体查询添加到您的样式中。这使您可以为打印表指定哪些内容可以打印以及其他特定样式。请不要浏览器支持。

    @media print { 
     /* All your print styles go here */
     *:not(.print_content) { display: none !important; } 
    }
    

    【讨论】:

    • 我可以定义为“不打印任何东西,除了 #print_content”,因为所有其他元素都没有 ID,并且每个元素都使用多个 material-ui 类?
    • 你可以使用 :not 选择器。像 *:not(...) 这样的东西应该可以工作
    • 我会将那部分添加到答案中
    【解决方案2】:

    这对我有用:

    @media print {
      :not(#print_content > *) {
        display: none !important;
      }
    
      /* because the first thing does not hide everything */
      .MuiDrawer-root,
      .MuiToolbar-root {
        display: none !important;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 2016-11-08
      • 2012-02-14
      • 1970-01-01
      • 2012-02-04
      相关资源
      最近更新 更多