Недостаточно просто вращать содержимое страницы. Вот правильный CSS, который работает в большинстве браузеров (Chrome, Firefox, IE9 +).
Сначала установите тело margin
на 0, так как в противном случае поля страницы будут больше, чем те, которые вы установили в диалоговом окне печати. Также установите background
цвет для визуализации страниц.
body {
margin: 0;
background: #CCCCCC;
}
margin
, border
и background
необходимы для визуализации страниц.
padding
должен быть установлен на требуемое поле для печати. В диалоговом окне печати вы должны установить те же поля (в этом примере 10 мм).
div.portrait, div.landscape {
margin: 10px auto;
padding: 10mm;
border: solid 1px black;
overflow: hidden;
page-break-after: always;
background: white;
}
Размер страницы А4 составляет 210 x 297 мм. Вам нужно вычесть поля печати из размера. И установите размер содержимого страницы:
div.portrait {
width: 190mm;
height: 276mm;
}
div.landscape {
width: 276mm;
height: 190mm;
}
Я использую 276 мм вместо 277 мм, потому что разные браузеры немного по-разному масштабируют страницы. Поэтому некоторые из них будут печатать содержимое высотой 277 мм на двух страницах. Вторая страница будет пустой. Более безопасно использовать 276 мм.
Нам не нужны margin
, border
, padding
, background
на распечатанной странице, поэтому удалите их:
@media print {
body {
background: none;
-ms-zoom: 1.665;
}
div.portrait, div.landscape {
margin: 0;
padding: 0;
border: none;
background: none;
}
div.landscape {
transform: rotate(270deg) translate(-276mm, 0);
transform-origin: 0 0;
}
}
Обратите внимание, что источником трансформации является 0 0
! Также содержимое альбомных страниц должно быть перемещено на 276 мм вниз!
Также, если у вас есть смесь портретных и пейзажных страниц, IE будет уменьшать страницы. Мы исправим это, установив -ms-zoom
в 1.665. Если вы установите значение 1,6666 или что-то в этом роде, правая граница содержимого страницы может иногда обрезаться.
Если вам нужна поддержка IE8 или других старых браузеров, вы можете использовать -webkit-transform
, -moz-transform
, filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)
. Но для достаточно современных браузеров это не требуется.