Печать верхнего / нижнего колонтитула на всех страницах (режим печати)
<div id="header">header</div>
<div id="content">
content spanning several pages...
</div>
<div id="footer">Footer - Fixed at the bottom of each page</div>
Я хочу напечатать #header
а также #footer
на каждой странице в режиме печати. Я много искал, но ничего не работает, даже position:fixed
не работает, как ожидалось.
4 ответа
Если вы хотите переключиться на таблицы для вашего макета (не обязательно идеально), вы можете сделать это с помощью <thead>
а также <tfoot>
элементы. Они будут печататься вверху и внизу каждой страницы:
<table>
<thead>
<!-- Will print at the top of every page -->
</thead>
<tbody>
<!-- Page content -->
</tbody>
<tfoot>
<!-- Will print at the bottom of every page -->
</tfoot>
</table>
Другой вариант заключается в использовании дисплея table-header-group
а также table-footer-group
но кросс-браузерная поддержка невелика:
#header {
display: table-header-group;
}
#main {
display: table-row-group;
}
#footer {
display: table-footer-group;
}
Я думаю, что я прибыл слишком поздно:), но я искал что-то вроде этого, и я нашел один ответ, который мне помогает (источник https://www.youtube.com/watch?v=yDgFLysON98). Я написал тег div до и после контента, как это
<div id="header">Top div content</div>
.
.
.
<div id="footer">Bottom div content</div>
Пример:
<!DOCTYPE html>
<html>
<head>``
<style>
body {
background-color: #CCC;
margin:48px 0px 0px 64px;
}
div#header {
position:fixed;
top:0px;
left:0px;
width:100%;
color:#CCC;
background:#333;
padding:8px;
}
div#footer {
position:fixed;
bottom:0px;
left:0px;
width:100%;
color:#CCC;
background:#333;
padding:8px;
}
</style>
</head>
<body>
<div id="header">HEADER</div>
<h1>Page Heading</h1>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<p>Content placeholder ...</p>
<div id="footer">FOOTER</div>
</body>
</html>
... Надеюсь, это поможет.
Для этого вам нужно использовать mso (свойства Microsoft Office CSS) в вашем стиле:
<style><--
@page
{
size:21cm 29.7cmt;
margin:1cm 1cm 1cm 1cm;
mso-title-page:yes;
mso-page-orientation: portrait;
mso-header: header;
mso-footer: footer;
}
@page content {margin: 1cm 1cm 1cm 1cm;}
div.content {page: content;}
</style>
Nisse Engstroms ответ правильный. Вам просто нужно поместить содержимое thead и tfoot в tr, чтобы он работал. И это также лучший метод, потому что когда вы используете абсолютное позиционирование в div для создания верхнего и нижнего колонтитула, он всегда будет перекрываться с вашим основным содержимым тела на следущая страница.
<table>
<thead>
<tr> !-- these are important
<th id="header"> !--- these are important
!--- content of header here
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
!---- main body here
</td>
</tr>
</tbody>
<tfoot>
<tr>
<th id="footer">
!----- content of footer here
</th>
</tr>
</tfoot>
</table>