Спасибо за помощь! Я пытаюсь напечатать указанный c div, используя CSS Медиа-запросы. При нажатии на печать, в зависимости от того, какой div они нажимают, я хочу скрыть все остальные элементы, кроме тела div, на которое они нажимают.
Все работает хорошо, за исключением случаев, когда я go печатаю, элементы находятся там, где они были бы изначально, я полагаю, из-за свойства 'hidden' ... другие div не являются на самом деле ушел. Я не могу использовать свойство display: none, потому что оно портит динамически генерируемые элементы.
Любые предложения о том, как заставить выбранные элементы печатать спереди и по центру на первой странице, были бы полезны!
Вот мой CSS для печати
<style>
/*CSS FOR HIDING ALL ELEMENTS EXCEPT THE PRINTED ONE*/
@media print {
/*set all HTML elements to hidden*/
body * {
visibility: hidden;
}
/*CSS classes to set chosen elements and all their children to visible*/
.section-to-print-head, .section-to-print-body, .section-to-print-head *, .section-to-print-body * {
visibility: visible;
display: block;
}
/*POSITIONING OF HEAD*/
.section-to-print-head {
position: absolute;
left: 0;
top: 0;
width: 100%;
page-break-after: avoid;
display: block;
}
/*POSITIONING OF BODY*/
.section-to-print-body {
position: absolute;
left: 5;
top: 0;
width: 100%;
z-index: 100;
}
.section-to-print-body:last-child {
page-break-after: avoid;
}
}
</style>
Вот HTML с кнопкой и функцией onclick
<div class="row infoAreaToPrint">
<div class="col-lg-5">
<div class="card">
<div class="card-body">
<p class="h4 border-bottom mb-0">
Customer: <?php echo $custName ?></p>
<span>
<button
onclick="printThisTableDiv('.infoAreaToPrint')">Print Info
</button>
</span>
Вот функция, которую я вызываю, чтобы скрыть все элементы, кроме того, что я хочу напечатать
function printThisTableDiv(tableID) {
let existingTags = document.querySelectorAll('.section-to-print-body');
let i;
for (i = 0; i < existingTags.length; i++) {
existingTags[i].classList.remove('section-to-print-body');
}
document.querySelector(tableID).classList.add("section-to-print-body");
window.print();
};