【问题标题】:How to make single div with contents to fill entire page when printed打印时如何使用内容制作单个 div 以填充整个页面
【发布时间】:2019-09-25 03:01:39
【问题描述】:

我有一个需要能够打印标签的 aurela 应用程序。在带有表单的页面上,有一个隐藏的 div,其中包含标签的布局。我只想打印隐藏的 div,并且我希望它被拉伸(带有内容)以达到横向页面的大小。目前它只占页面的一个小角落。

JSFiddle Label

这是我试图让它工作的 CSS。奇怪的是对@page 的更改什么也没做。我尝试了不同的页面大小,但没有影响 div,它仍然位于一个角落。

    @media print {
  header, footer, .print-hidden {
    visibility: hidden;
  }

  @page {
    size: auto;
    margin: 0mm;
  }

  html, body {
    height: 100%;
    width: 100%;
  }

  .print-show{
    display: block;

    position: absolute;

    width: 100vw;
    height: 100vh;
    top:0;
    bottom:0;
  }
}

这是标签的 aurelia 模板

<template bindable="firstname, lastname, company, inviter, uniquecode">
<div class="label-container">
<div class="row justify-content-start mx-0 px-1 pt-1">
    <div class="text-center">
        <img class="label-logo" src="image.png">
        <div class="visitor-logo">VISITOR</div>
    </div>
</div>
<div class="flex-row text-center label-name">
    <div>${firstname}</div>
    <div>${lastname}</div>
</div>
<div class="text-center label-company">
    ${company}
</div>
<div class="row justify-content-between mx-0 px-1">
    <div>
        <div class="label-guestof">Guest of</div>
        <div class="label-inviter">${inviter}</div>
    </div>
    <span>${uniquecode}</span>
</div>
</div>

这里是标签的自定义 css 类:

    .label-container{
  width: 350px;
  height: 188px;
}

.visitor-logo{
  font-weight: normal;
  font-size: 15px;
  color: #505659;
}

.label-name{
  font-weight: 600;
  font-size: 28px;
  color: #2B3033;
}

.label-company{
  font-weight: normal;
  font-size: 12px;
  color: #737B80;
}

.label-guestof{
  font-weight: normal;
  font-size: 10px;
  color: #737B80;
}

.label-inviter{
  font-weight: 600;
  font-size: 12px;
  color: #505659;
}

.label-logo{
  height: 28px;
  width: 60px;
}

【问题讨论】:

  • 您能提供一个Minimal, Complete, and Verifiable example 吗?创建堆栈 sn-p 或 JSFiddle。
  • @Jake 添加了 JSFiddle。我对 JSFiddle 了解不多,但我希望它足够了。 ${...} 是 aurelias 单向绑定。
  • 在您的印刷媒体查询中简单地将.label-container 设置为width: 100%; height: 100%;
  • @Jake 很好地解决了宽度问题,但高度问题仍然存在,但似乎我制作 css 样式的方式存在一些问题......我需要找一个有经验的人CSS 并帮助我为这个东西创建正确的布局......

标签: html css aurelia


【解决方案1】:

我稍微重新设计了它的样式并添加了背景颜色以便更好地检查。我希望这是你正在寻找的。如果不是的话,这样做会很有趣:P。

<!--index.html-->
<div class="label-container">
  <div class="label-container__header mx-0 px-1 pt-1">
    <div class="text-center">
      <img class="label-logo" src="image.png">
      <div class="visitor-logo">VISITOR</div>
    </div>
  </div>
  <div class="label-container__names label-name">
    <div>${firstname}</div>
    <div>${lastname}</div>
  </div>
  <div class="label-container__company label-company">
    ${company}
  </div>
  <div class="label-container__footer justify-content-between mx-0 px-1">
    <div>
      <div class="label-guestof">Guest of</div>
      <div class="label-inviter">${inviter}</div>
    </div>
    <span>${uniquecode}</span>
  </div>
</div>

// style.css
html, body {
  height: 100%;
  width: 100%;
}

.label-container {
  width: auto;
  height: 100%;
  background-color: #aaa;

  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.label-container__header {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
}

.label-container__names {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.label-container__company {
  display: flex;
  justify-content: center;
}

.label-container__footer {
  display: flex;
  justify-content: flex-end;
}

.visitor-logo{
  font-weight: normal;
  font-size: 15px;
  color: #505659;
}

.label-name{
  font-weight: 600;
  font-size: 28px;
  color: #2B3033;
}

.label-company{
  font-weight: normal;
  font-size: 12px;
  color: #737B80;
}

.label-guestof{
  font-weight: normal;
  font-size: 10px;
  color: #737B80;
}

.label-inviter{
  font-weight: 600;
  font-size: 12px;
  color: #505659;
}

.label-logo{
  height: 28px;
  width: 60px;
}

【讨论】:

  • 一些新信息。打印它的纸张尺寸为 50mmX94mm。如果标签被打印出来,它应该在标签上是横向的,它应该很好地填充标签:D 如果布局已设置,我可以自己修复字体和图像的比例。
  • .label-container { width: 94%; height: 55%; ... } 那么这个比例应该是正确的
  • 是的,这是可行的,但在 Fireforx 中是唯一的。 Chrome和IE都搞砸了。虽然 FF 将所有内容都放在一页上。 IE 和 Chrome 将内容分散到 14 页。
  • 好吧,这很奇怪.. 我已经针对 chrome canary 进行了编码和测试。 :P
  • 我也检查了 Chrome 金丝雀,结果相同。感觉 chrome 打印系统无法处理 flex box 和 flex rows。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 2012-09-15
相关资源
最近更新 更多