aza*_*zad 1 html css printing safari
以下代码应导致每个代码div作为单独的页面打印.每个div被设置为width和height的100%.此HTML页面在除Safari 5.6.1之外的所有浏览器中打印为三页.如何在Safari中修复它?
请将以下代码复制到新文件并进行测试:
<html>
<head>
<style>
html,
body {
height: auto;
margin: 0;
padding: 0;
}
input {
border: 2px solid red;
}
</style>
</head>
<body>
<div style="background-color:red; position: relative; width:100%;height:100%;">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 1.2%;left:1.2%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 6.4%;left:1.3%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 10.4%;left:1.3%">
</div>
<div style="background-color:green; position: relative; width:100%;height:100%;">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 1.2%;left:1.2%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 6.4%;left:1.3%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 10.4%;left:1.3%">
</div>
<div style="background-color:red; position: relative; width:100%;height:100%;">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 1.2%;left:1.2%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 6.4%;left:1.3%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 10.4%;left:1.3%">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你应该考虑使用page-break-after.您可以强制每个的分页符div,只需添加的在你的例子page-break-after: always;给你的div造型.
如果您检查page-break-after上我可以使用网站,98.26%的浏览器的支持.这包括Safari 5.x和所有其他版本的Safari.
如果要page-break-after内联添加属性,可以使用以下代码:
<div style="background-color:red; position: relative; width:100%; height:100%; page-break-after: always;">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 1.2%;left:1.2%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 6.4%;left:1.3%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 10.4%;left:1.3%">
</div>
<div style="background-color:green; position: relative; width:100%; height:100%; page-break-after: always;">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 1.2%;left:1.2%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 6.4%;left:1.3%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 10.4%;left:1.3%">
</div>
<div style="background-color:red; position: relative; width:100%; height:100%; page-break-after: always;">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 1.2%;left:1.2%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 6.4%;left:1.3%">
<input type="text" style="width:5%; height:1.2%; border:1px solid; position:absolute; top: 10.4%;left:1.3%">
</div>
Run Code Online (Sandbox Code Playgroud)
如果您只想在用户打印时添加page-break-after到您div的用户,您可以使用@media print CSS查询,如下所示:
@media print {
div {
page-break-after: always;
}
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,@media查询不能用于内联样式,您必须将其添加到CSS文件或<style>标记之间.
由于Safari 5.x仍然打印五页而不是其他三页,请尝试将以下代码添加到HTML中:
<style>
@media print {
div {
width: auto !important; /* 100% Might be breaking your current code. */
height: auto !important; /* 100% Might be breaking your current code. */
page-break-after: always;
}
}
</style>
Run Code Online (Sandbox Code Playgroud)
Safari可能会将该值识别为高于100%,从而导致div打印到多个页面.
如果上面的代码不能正常工作,尝试加入height: 50px !important;到div造型和汇报的结果.防爆.什么颜色出现在哪些页面上?
让我们尝试一些自定义代码,看看这是否是Safari 5.x的错误.我们将div使用page-break-after属性创建三个元素.而已.
<!DOCTYPE html>
<html>
<body>
<div style="page-break-after: always;">Page 1</div>
<div style="page-break-after: always;">Page 2</div>
<div style="page-break-after: always;">Page 3</div>
</body>
</html>
</html>
Run Code Online (Sandbox Code Playgroud)
将其粘贴到新的空白HTML文档中,然后保存并尝试打印.Safari还想打印5页吗?如果是这样,这是Safari的一个错误.
如果只打印3页,请尝试position:absolute从input代码中删除.如果这不能解决问题,请慢慢从头开始重建页面,看看是什么代码导致它分成5页.
您可以
page-break访问W3或CSS-Tricks了解有关这些属性的更多信息.