CSS page-break-before не работает в строке таблицы

У меня есть такая таблица HTML:

<table>
        <tr>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
        </tr>
        <tr>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
        </tr>
        <tr class = "page-break">
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
        </tr>
        <tr>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
        </tr>
        <tr>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
        </tr>
        <tr>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
            <td>aaa</td>
        </tr>
    </table>

Что я пытаюсь сделать, так это применить разрыв страницы перед третьей строкой при печати.

Я применил следующий CSS:

@media print {
            tr.page-break {
                page-break-before: always;
            }
}

Что абсолютно ничего не дало, я применил display: block к этому CSS-коду следующим образом:

@media print {
            tr.page-break {
                page-break-before: always;
                display: block;
            }
}

Он не разрывает страницы, а также портит мою таблицу при печати, что я делаю не так?

page-break-before => Вы не можете использовать это свойство для пустого <div> или для абсолютно позиционированных элементов.

Sonal Borkar 18.12.2018 21:33

@ user979331 - правка, которую я ввел в ответ, является наиболее авторитетным решением этой проблемы, по-видимому, это известная проблема, с которой многие сталкивались, но лучшего решения пока нет. Не могли бы вы принять ответ? Счастливых праздников..

Rachel Gallen 19.12.2018 02:00
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
2
3 618
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте следующее: @media print не требуется

 table tr.page-break{
    page-break-inside: avoid;
    page-break-before: always;
 } 

вам может потребоваться указать ширину столбцов.

ИЛИ

с @media print

 @media print {
    .page-break  { page-break-before: always; }
 }

Я пробовал это в Chrome и Safari, и это не работает

user979331 18.12.2018 22:00
Ответ принят как подходящий

Если вы используете запросы к печатным носителям, лучше всего добавить !important к стилям, указанным в запросе к печатным носителям (это один из немногих случаев, когда рекомендуется добавлять !important!)

Пытаться:

@media print {
        tr.page-break {
            page-break-before:always!important;
        }
 }

и посмотрим, как у вас дела ... Надеюсь, это поможет

Обновлено:

Измените свой CSS, включив в него следующее:

 @media print {
  table.report { page-break-after:auto }
  table.report tr    { page-break-inside:avoid; page-break-after:auto }
  table.report td    { page-break-inside:avoid; page-break-after:auto }
  table.report thead { display:table-header-group }
  table.report tfoot { display:table-footer-group }
 }

Источник Спасибо, Маджид!

Фух!

@ user979331 также убедитесь, что класс определен в основном CSS. У вас может быть .pbrk {} (пустой класс) или вместо этого вы можете просто добавить небольшой верхний край (1px или 2px или что-то в этом роде). Я бы выбрал последнее

Rachel Gallen 18.12.2018 22:45

Я нашел этот ответ stackoverflow.com/questions/45046834/…, который дает исчерпывающее объяснение. (в основном он говорит, что в строке таблицы должно быть 2 блока, даже если один пуст, и ставит разрыв страницы перед вторым). Другой вопрос, на который он ссылается, имеет другой ответ с 97 голосами! Вы можете попробовать это ... Любопытно, что это такая большая проблема ...

Rachel Gallen 18.12.2018 23:07

Это вроде работает, это разрывает страницу, но он создает очень-очень длинную ячейку таблицы с рамкой, она показывает первые две строки, делает разрыв страницы, затем на второй странице есть очень длинная ячейка с границей ( всего одна ячейка), а затем выполните следующие строки.

user979331 18.12.2018 23:32

@ user979331, если он показывает только 2 строки, я скажу поставить разрыв страницы после? (вместо page-break-before?), если у вашей таблицы есть граница, это приведет к тому, что она будет выглядеть длинной, в зависимости от высоты строк таблицы.

Rachel Gallen 18.12.2018 23:41

Другие вопросы по теме