Повторіть заголовки таблиць у режимі друку


101

Чи можна в CSS, використовуючи властивість всередині @page, сказати, що заголовки таблиць (th) слід повторювати на кожній сторінці, якщо таблиця поширюється на кілька сторінок?

Відповіді:


109

Для цього і є елемент THEAD . Офіційні документи тут .


1
Я не думав про це, але, схоже, це не працює на практиці.
avernet

1
Я успішно використовував це у Firefox.
джиші

5
Як завжди, для цього потрібен нерозбитий браузер - дивіться коментар jishi.
Пітер Роуелл

9
Ці коментарі досить старі. Станом на 13.03.13 перевірка лінивих плям показує, що вона працює в останній IE10 і навіть поважний IE8 ...
Натан

8
Нарешті, Chrome підтримує повторні заголовки таблиць для друкованих носіїв. Це ввімкнено, якщо це є break-inside:avoid, і його можна відключити break:inside: auto. Дивіться codereview.chromium.org/2021703002/#ps20001
Алекс Осборн

69

Деякі браузери повторюють theadелемент на кожній сторінці, як і належить. Інші потребують допомоги: додайте це до свого CSS:

thead {display: table-header-group;}
tfoot {display: table-header-group;}

Opera 7.5 і IE 5 не повторюватимуть заголовки незалежно від того, що ви спробували.

( джерело )


Також не працює Flying Saucer, який я використовую для створення PDF-файлу. Я також задам це запитання у списку розсилки Flying Saucer, щоб дізнатися, чи є інший спосіб зробити це.
avernet

7
Останні версії Chrome і Safari також не роблять цього. Дивіться мою відповідь за посиланнями на їхні відстежувачі проблем.
Нік Ноулсон

1
матір божа, на той час це було написано IE5 було ще щось?
igorsantos07

Я тільки що спробував theadприклад у своєму CSS (сумісний з IE7), і він повторює заголовки, коли я роблю попередній перегляд друку. Дякую. Але я бачу отримати повторений рядок у верхній частині наступної сторінки. Чому?
Ендрю Truckle

45

Перш ніж реалізувати це рішення, важливо знати, що Webkit зараз цього не робить.

Ось відповідна проблема у відстежувачі проблем Chrome: http://code.google.com/p/chromium/isissue/detail?id=24826

А на трекері випуску Webkit: https://bugs.webkit.org/show_bug.cgi?id=17205

Позначайте зірочкою на трекері проблем Chrome, якщо ви хочете показати, що це важливо для вас (я це зробив).


1
Дякую за це - це могло б заподіяти мені величезний головний біль, якби я не прокрутився вниз.
Seiyria

4
І майже через 4 роки (і 8 років з моменту подання випуску WebKit) це все одно!
jcaron

41

Flying Saucer xhtmlrenderer повторює THEAD на кожній сторінці виводу PDF, якщо ви додаєте до свого CSS наступне:

        table {
            -fs-table-paginate: paginate;
        }

(Це працює принаймні з моменту випуску R8.)


4
Це саме те, що я шукав. Дякую!
Олексій

Дивовижно! (посилання мертве: /)
Кирило Н.

Дивовижно! Дякую!
Фрізон Олександр

6

Браузери Chrome і Opera не підтримують, thead {display: table-header-group;}але решта інших підтримують належним чином.


як цього досягти в хромі?
Null Pointer

4

Як надрукувати таблицю HTML. Заголовок і колонтитул на кожній сторінці

Також працюйте в браузерах Webkit

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function PrintPage() {
            document.getElementById('print').style.display = 'none';
            window.resizeTo(960, 600);
            document.URL = "";
            window.location.href = "";
            window.print();
        }

    </script>
    <style type="text/css" media="print">
        @page
        {
            size: auto; /* auto is the initial value */
            margin: 2mm 4mm 0mm 0mm; /* this affects the margin in the printer settings */
        }
        thead
        {
            display: table-header-group;
        }
        tfoot
        {
            display: table-footer-group;
        }
    </style>
    <style type="text/css" media="screen">
        thead
        {
            display: block;
        }
        tfoot
        {
            display: block;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table style="width: 500px; margin: 0 auto;">
            <thead>
                <tr>
                    <td>
                        header comes here for each page
                    </td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        1
                    </td>
                </tr>
                <tr>
                    <td>
                        2
                    </td>
                </tr>
                <tr>
                    <td>
                        3
                    </td>
                </tr>
                <tr>
                    <td>
                        4
                    </td>
                </tr>
                <tr>
                    <td>
                        5
                    </td>
                </tr>
                <tr>
                    <td>
                        6
                    </td>
                </tr>
                <tr>
                    <td>
                        7
                    </td>
                </tr>
                <tr>
                    <td>
                        8
                    </td>
                </tr>
                <tr>
                    <td>
                        9
                    </td>
                </tr>
                <tr>
                    <td>
                        10
                    </td>
                </tr>
                <tr>
                    <td>
                        11
                    </td>
                </tr>
                <tr>
                    <td>
                        12
                    </td>
                </tr>
                <tr>
                    <td>
                        13
                    </td>
                </tr>
                <tr>
                    <td>
                        14
                    </td>
                </tr>
                <tr>
                    <td>
                        15
                    </td>
                </tr>
                <tr>
                    <td>
                        16
                    </td>
                </tr>
                <tr>
                    <td>
                        17
                    </td>
                </tr>
                <tr>
                    <td>
                        18
                    </td>
                </tr>
                <tr>
                    <td>
                        19
                    </td>
                </tr>
                <tr>
                    <td>
                        20
                    </td>
                </tr>
                <tr>
                    <td>
                        21
                    </td>
                </tr>
                <tr>
                    <td>
                        22
                    </td>
                </tr>
                <tr>
                    <td>
                        23
                    </td>
                </tr>
                <tr>
                    <td>
                        24
                    </td>
                </tr>
                <tr>
                    <td>
                        25
                    </td>
                </tr>
                <tr>
                    <td>
                        26
                    </td>
                </tr>
                <tr>
                    <td>
                        27
                    </td>
                </tr>
                <tr>
                    <td>
                        28
                    </td>
                </tr>
                <tr>
                    <td>
                        29
                    </td>
                </tr>
                <tr>
                    <td>
                        30
                    </td>
                </tr>
                <tr>
                    <td>
                        31
                    </td>
                </tr>
                <tr>
                    <td>
                        32
                    </td>
                </tr>
                <tr>
                    <td>
                        33
                    </td>
                </tr>
                <tr>
                    <td>
                        34
                    </td>
                </tr>
                <tr>
                    <td>
                        35
                    </td>
                </tr>
                <tr>
                    <td>
                        36
                    </td>
                </tr>
                <tr>
                    <td>
                        37
                    </td>
                </tr>
                <tr>
                    <td>
                        38
                    </td>
                </tr>
                <tr>
                    <td>
                        39
                    </td>
                </tr>
                <tr>
                    <td>
                        40
                    </td>
                </tr>
                <tr>
                    <td>
                        41
                    </td>
                </tr>
                <tr>
                    <td>
                        42
                    </td>
                </tr>
                <tr>
                    <td>
                        43
                    </td>
                </tr>
                <tr>
                    <td>
                        44
                    </td>
                </tr>
                <tr>
                    <td>
                        45
                    </td>
                </tr>
                <tr>
                    <td>
                        46
                    </td>
                </tr>
                <tr>
                    <td>
                        47
                    </td>
                </tr>
                <tr>
                    <td>
                        48
                    </td>
                </tr>
                <tr>
                    <td>
                        49
                    </td>
                </tr>
                <tr>
                    <td>
                        50
                    </td>
                </tr>
                <tr>
                    <td>
                        51
                    </td>
                </tr>
                <tr>
                    <td>
                        52
                    </td>
                </tr>
                <tr>
                    <td>
                        53
                    </td>
                </tr>
                <tr>
                    <td>
                        54
                    </td>
                </tr>
                <tr>
                    <td>
                        55
                    </td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td>
                        footer comes here for each page
                    </td>
                </tr>
            </tfoot>
        </table>
    </div>
    <br clear="all" />
    <input type="button" id="print" name="print" value="Print" onclick="javascript:PrintPage();"
        class="button" />
    </form>
</body>
</html>

Просто працюйте на робочому столі chrome.Chrome/Safari на iphone не працює!
Девін Гонг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.