码:
我尝试使以下简单的HTML页面工作:
<html> <head> <style type="text/css"> @media print { @page port { size: portrait; } .portrait { page: port; } @page land { size: landscape; } .landscape { page: land; } .break { page-break-before: always; } } </style> </head> <body> <div class="landscape"> <p>This is a landscape page.</p> </div> <div class="portrait break"> <p>This is a portrait page.</p> </div> </body> </html>
题:
我想将第一个div的内容打印到第一页,横向,第二个是纵向模式。但是,所有的浏览器(Chrome,Opera,Safari,IE10)都会打印两个纵向页面。我错过了什么,还是没有一个浏览器支持这种功能呢?在后一种情况下,是否有任何替代方案来实现这一结果?
解决方法
一个快速而肮脏的黑客将使用CSS3或过滤器将要在景观中的div旋转90度。以下将工作:
-webkit-transform: rotate(-90deg); -moz-transform:rotate(-90deg); filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
目前没有任何简单的方法可以以任何其他方式执行此操作,因为大小的CSS指令只能由一个浏览器(Opera)实现,但仍然是当前草案的一部分(Is @Page { size:landscape} obsolete? for the deprecation,http://www.w3.org/TR/css3-page/#page-size for the spec)。
下一个最便宜的攻击是我上面提到的:将HTML放在肖像上,并使用CSS3旋转90度。