我正在尝试为我认为相当简单的 html 结构创建一个样式表,但我无法实现我想要的。
html的结构如下:
它由章节(类:)组成.chapter
。
每章都有一个标题(类:).chapter-title
。
一章由项目(类:)组成.item
。
一个项目由段落组成(类:).paragraph
。
打印文档时,我希望.chapter-title
和first .item
之间没有分页符,并且我希望.item
. s之间的分页符.item
是可以的。
这是我尝试过的:
<!DOCTYPE html>
<html>
<head><!--{-->
<title>Chapter, items and paragraphs</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--{--><style type='text/css'>
body {
font-family:Garamond;
}
.chapter {
page-break-inside:avoid;
}
.chapter-title + .item {
page-break-before:avoid;
}
.chapter-title {
font-size: 30px;
page-break-after:avoid;
}
.item {
border: 1px dashed #ccc;
page-break-inside:avoid;
}
.paragraph {
height:5cm;
border: 1px solid #7cf;
margin:0.1cm;
}
</style><!--}-->
</head><!--}-->
<body><!--{-->
<div class='chapter'>
<div class='chapter-title'>Chapter 1</div>
<div class='item'>
<div class='paragraph'>1 / 1 / Para 1</div>
</div>
<div class='item'>
<div class='paragraph'>1 / 2 / Para 1</div>
<div class='paragraph'>1 / 2 / Para 2</div>
</div>
</div>
<div class='chapter'>
<div class='chapter-title'>Chapter 2</div>
<div class='item'>
<div class='paragraph'>2 / 1 / Para 1</div>
<div class='paragraph'>2 / 1 / Para 2</div>
</div>
<div class='item'>
<div class='paragraph'>2 / 2 / Para 1</div>
</div>
</div>
<div class='chapter'>
<div class='chapter-title'>Chapter 3</div>
<div class='item'>
<div class='paragraph'>3 / 1 / Para 1</div>
<div class='paragraph'>3 / 1 / Para 2</div>
</div>
<div class='item'>
<div class='paragraph'>3 / 2 / Para 1</div>
</div>
<div class='item'>
<div class='paragraph'>3 / 3 / Para 1</div>
<div class='paragraph'>3 / 3 / Para 2</div>
<div class='paragraph'>3 / 3 / Para 3</div>
</div>
<div class='item'>
<div class='paragraph'>3 / 4 / Para 1</div>
<div class='paragraph'>3 / 4 / Para 2</div>
</div>
</div>
</body><!--}-->
</html>
如果打印 (chrome, page size A4) 我在第 3 章和它的第一个元素之间有一个分页符。我尝试了上述的一些变体,但这是最接近我需要的。那么,是否有一个样式表来完成我想要的?
请注意,这里的 cssheight
属性.paragraph
只是为了人为地“炸毁”文档的大小。在“真实”的文档中,文字较多,使得.paragraphs的高度不一。
编辑重命名为items的错误元素。