Подтвердить что ты не робот

Скрыть все элементы, кроме одного div для печати

У меня есть следующий CSS для моего стиля печати:

* {
 display:none;
}

#printableArea {
 display:block;
}

Я ожидал, что это скроет все элементы и покажет только printableArea, однако все будет скрыто. В режиме печати все, что я получаю, это пустая страница.

Я правильно включил его в HEAD, media="print" в этой таблице стилей.

4b9b3361

Ответ 1

Если элемент не отображается, то ни один из его дочерних элементов не будет отображаться (независимо от его свойства отображения).

* соответствует элементу <html>, поэтому весь документ скрыт.

Вам нужно быть более избирательным в отношении того, что вы скрываете.

Ответ 2

Вы выбираете правильный общий подход, но хотите использовать visibility: hidden вместо display: none, чтобы вы могли видеть дочерние элементы.

См. Печать < div id = printarea > </div> только?

Ответ 3

html body * {
 display:none;
}

#printableArea {
 display:block;
}

Кроме того, вам может понадобиться! important на #printableArea, но, вероятно, нет.

Ответ 4

Вы можете попробовать найти его поверх всего. Это разрешило 90% моих проблем, тогда мне просто пришлось создать класс .noprint и добавить его в несколько элементов для отладки.

.print_area{
    position: fixed;
    top: 0px;
    left: 0px;
    width: 100%;
    z-index: 9999;

    background-color: #ffffff;
}

Ответ 5

Если вы хотите использовать JavaScript, вы можете попробовать этот простой фрагмент, который даже не требует jQuery:

document.body.innerHTML=document.getElementById('printableArea').innerHTML;

Ответ 6

Существует однострочное решение:

С JQuery

var selector = '';
$(document.head).append($('style').text('*{visibility:hidden}' + selector + '{visibility:visible}'));

Без JQuery

var selector = '';
document.head.appendChild(Object.assign(document.createElement('style'), { innerText: '*{visibility:hidden}' + selector + '{visibility:visible}' });

В обоих примерах, установите selector переменной в селекторе вы хотите. Например, div#page:hover или p.class1,p.class2

Ответ 7

сделайте div обернуть все после тега body. Перед обтеканием div поместите видимый элемент div.

Я должен был сделать это, чтобы создать простую страницу с именем пользователя и паролем, и мне нужно было спрятать все, кроме полупрозрачного фона формы входа. Таким образом, после ввода правильных учетных данных форма будет анимирована, а полупрозрачная обложка страницы будет анимирована, и, наконец, отобразится ВСЕ, кроме вас, и вы сможете нормально использовать страницу.