css 在页面中心以html格式打印文本

nfzehxib  于 2023-02-26  发布在  其他
关注(0)|答案(3)|浏览(155)

我有一个下一个问题-试图找到它与谷歌,但没有找到什么可以帮助我。我有一个大的HTML文件,我需要打印,以分隔页面我使用CSS break-after如何在页面中心打印一个元素,不仅要水平居中,还要垂直居中. HTML看起来像这样:

<!DOCTYPE html>
<html>
    <head>
        <style>
            @media all {
                body
                {
                    text-align:left;
                }
                p.paragrpahs
                {
                    text-align:center;
                    font-family:Arial,Helvetica,sans-serif;
                    font-size:32px;
                    font-weight:bold;
                    vertical-align: center;
                }
                .break_here
                {
                    page-break-before:always;
                }
            }
        </style>
    </head>

    <body>
        *Tons of text*
        <p class="break_here"><p class="paragrpahs">Some text</p><p class="break_here">
        *Tons of text*
    </body>
</html>
xhv8bpkk

xhv8bpkk1#

首先,它是vertical-align: middle,而不是vertical-align: center,参见MDN - vertical-align
有一篇关于以CSS Tricks - Centering in the Unknown为中心的文章很不错。将其转换到示例中,必须首先设置

html, body {
    height: 100%;
}

以及

p.paragrpahs {
    height: 100%;
}

然后添加所提到的"重影"元素

p.paragrpahs:before {
    content: '';
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

一个三个三个一个
这将使你的文本在整个页面上垂直居中,参见JSFiddle。当你使用p.paragrpahs(sic?)做其他事情时,你应该添加一个单独的vcenter类或类似的类。

  • 更新日期:*

不幸的是,对于较长的文本(超过一行),这种方法不起作用。如果文本较长,可以将文本换行到span元素中

<p class="paragrpahs"><span>Lorem ipsum dolor sit amet, ...</span></p>

然后给这个

p.paragrpahs span {
    display: inline-block;
}
html,
body {
  height: 100%;
}

p.paragrpahs {
  height: 100%;
}

p.paragrpahs:before {
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}

p.paragrpahs span {
  display: inline-block;
}
*Tons of text*
<p class="break_here">
  <p class="paragrpahs"><span>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</span></p>
  <p class="break_here">
    *Tons of text*

然后,这个inline-blockspan将再次与重影(:before)元素垂直对齐。
参见更新的JSFiddle

p3rjfoxz

p3rjfoxz2#

这种flex方法对我很有效。
在CSS中:

@media print {
    div.centerOnPrintedPage {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        height: 100vh;
    }
}

在HTML中:

<div class="centerOnPrintedPage">
    <h3>This page intentionally left blank.</h3>
</div>

在Firefox、Google Chrome、Internet Explorer和Microsoft Edge中进行了测试。

hi3rlvi2

hi3rlvi23#

假设.paper_card是打印过程中最外层的样式化div,下面的CSS将强制每个样式化div为一页,拉伸它以适合打印页面(并调整纸张大小)。

div.paper_card {
    position: relative;
    width: 60vh;
    height: 90vh;
    border: 1vh solid #ee6e73;
    border-radius: 5vh;
    margin: 20px auto;
    page-break-after: always;
  }

  @media print {
    div.paper_card {  
      margin: 0px auto; 
      top: 0px; 
      bottom: 0px; 
      width: auto;
      height: 100vh;
    }
  }

请注意,您应该对所有内部元素使用VH大小调整,以使其缩放到各种纸张大小。

相关问题