我正在制作一个小型个人网站,需要能够打印。该网站结构简单:`body` 作为背景,有一个容器子元素,它有固定的宽度(以及一些样式、填充等),在这个容器内,我有几个部分(`
`)。在打印时,除非必要,否则我不想将这些部分分开(因此,`.section` 增加了样式 `page-break-inside: avoid;`)。显然,如果这样的部分无法适应单个页面,它将在内部产生分页,但否则将把元素滑动到下一页。
这部分已经正常工作,但是在分页后,我仍希望下一个元素与页面顶部对齐,并保持其默认的边距。但事实并非如此。每当我进行打印预览时,被推到下一页的`.section` 元素的顶部边距都会消失-尽管除非我的分页和边距的理解是不正确的(这可能是问题所在)。
我准备了一个小例子:
这部分已经正常工作,但是在分页后,我仍希望下一个元素与页面顶部对齐,并保持其默认的边距。但事实并非如此。每当我进行打印预览时,被推到下一页的`.section` 元素的顶部边距都会消失-尽管除非我的分页和边距的理解是不正确的(这可能是问题所在)。
我准备了一个小例子:
body {
background: none repeat scroll 0 0 #eee;
margin: 0;
color: #4a4a4a;
display: block;
}
.container {
margin: 16px auto;
padding: 2.5% 0;
max-width: 200mm;
line-height: 1.1;
border-radius: 16px;
background-color: #fff;
color: #fff;
}
.container>.section {
padding: 3%;
margin: 5% 2.5%;
min-height: 500px;
border-radius: 16px;
box-shadow: 0px 4px 8px 0px #AA888888;
}
.container>.section:first-of-type {
margin-top: 0%;
}
.container>.section:last-of-type {
margin-bottom: 0%;
}
.section-red {
background-color: #f44336;
background-repeat: repeat;
}
.section-green {
background-color: #8bc34a;
background-repeat: repeat;
}
.section-blue {
background-color: #03a9f4;
background-repeat: repeat;
}
.section-yellow {
background-color: #c0ca33;
background-repeat: repeat;
}
.section-orange {
background-color: #ffb300;
background-repeat: repeat;
}
.section-pink {
background-color: #e91e63;
background-repeat: repeat;
}
.section-purple {
background-color: #9c27b0;
background-repeat: repeat;
}
.font-size-large {
font-size: 14px !important;
}
.font-size-xlarge {
font-size: 18px !important;
}
@media print {
body {
width: 210mm;
}
.container {
max-width: 90%;
min-width: 0;
margin: 5mm auto 200mm;
}
.container > .section {
page-break-inside: avoid;
margin-top: 8px;
}
.container > .section > section {
page-break-inside: avoid;
}
}
<html>
<head>
</head>
<body>
<div class="container font-size-large">
<div class="section section-red">
</div>
<div class="section section-blue">
</div>
<div class="section section-green">
</div>
<div class="section section-purple">
</div>
<div class="section section-orange">
</div>
</div>
</body>
</html>
尽管如此,您可能需要将它复制到本地HTML和CSS文件中才能正确打印。
编辑:
问题的快速可视化示例。