Як приховати елемент під час друку веб-сторінки?


440

Я маю на своїй веб-сторінці посилання для друку веб-сторінки. Однак посилання також видно в самій роздруківці.

Чи існує JavaScript або HTML-код, який ховав би кнопку посилання, коли я натискаю посилання для друку?

Приклад:

 "Good Evening"
 Print (click Here To Print)

Я хочу приховати цю мітку "Друк", коли вона надрукує текст "Доброго вечора". Мітка "Друк" не повинна відображатися на самому роздрукуванні.

Відповіді:


743

До таблиці стилів додайте:

@media print
{    
    .no-print, .no-print *
    {
        display: none !important;
    }
}

Потім додайте class='no-print'(або додайте клас без друку до наявного виразу класу) у своєму HTML, який ви не хочете відображати у друкованій версії, наприклад у вашій кнопці.


17
Ця відповідь не є повною. Ви повинні мати два медіа-секції. @mediaдрук та @mediaекран. У розділі друку ви розміщуєте свої стилі для друку. У розділі екранного екрана ви розміщуєте свої стилі для трафаретного друку. Ви навіть можете мати кілька розділів екрана для різних роздільних можливостей. Якщо ви просто додасте те, що вказано у цій відповіді, це не спрацює. Повірте, я спробував. То як це отримало 69 оновлень?
Codeguy007

6
насправді це спрацьовує, якщо ви просто використовуєте код, що надається. я щойно спробував у firefox. тож, принаймні, в сучасних браузерах це рішення.
luschn

8
Я намагався приховати <div> з декількома під-елементами всередині. Проблема полягала в тому, що деякі елементи все ще були помітні на друку. Рішення було використовувати цей css:@media print { .no-print, .no-print * { display: none !important; } }
Філіп

6
Це може не працювати, залежно від вказаного носія. Наприклад, щоб поєднати і стиль екрану, і стиль друку в одному аркуші стилів, а потім використовувати медіа-запити в межах цього аркуша стилів, як передбачає ця відповідь, потрібно вказати як "екран", так і "друкувати" типи медіа:<link rel="stylesheet" href="all.css" media="screen, print" type="text/css">
Клінт Пахл

5
@ Codeguy007: Я не розумію вашої точки зору. Вам потрібно лише, @media screenякщо ви хочете визначити стилі лише для екрана, але це не так: тут за замовчуванням відображаються всі елементи, а шляхом визначення стилю для друку, який приховує елемент, цілком достатньо для того, щоб він все-таки відображався на екрані .
chiccodoro

173

Bootstrap 3 має свій власний клас для цього називається:

hidden-print

Він визначається так:

@media print {
  .hidden-print {
    display: none !important;
  }
}

Ви не повинні визначати це самостійно.


У Bootstrap 4 це змінилося на:

.d-print-none

Рішення Great Bootstrap 4. Працює як шарм.
Дієго Віктор де Ісус

Не можу повірити, як я до цього часу пропустив завантажувальне рішення .. Дякую!
ReturnTable

! importantврятував мене.
Еван Ху

168

Найкраща практика - використання аркуша стилів, спеціально для друку та встановити його mediaатрибут print.

У ній покажіть / прихойте елементи, які ви хочете надрукувати на папері.

<link rel="stylesheet" type="text/css" href="print.css" media="print" />

9
Тут ви також повинні мати css, щоб не відображати інший вміст обгортки, змінити сімейство шрифтів на кращу величину, видалити ширину, щоб дозволити повне використання сторінки. Якщо ви встановите основний аркуш стилів для медіа = "екрана", ви можете ставитися до таблиці стилів друку як до нового відтворення.
Стів Перкс

2
Абсолютно. І при такому підході ви можете просто видалити "Клацніть тут для версії для друку" або додати "Ця сторінка зручна для друку" або подібну. Доброю практикою є, як сказав Стів Перкс, видалити весь несекретний вміст, наприклад, навігацію, рекламу тощо. Включіть лише основний вміст сторінки.
Arve Systad

39

Ось просте рішення поставити цей CSS

@media print{
   .noprint{
       display:none;
   }
}

і ось HTML

<div class="noprint">
    element that need to be hidden when printing
</div>
<div class="noprint">
    element that need to be hidden when printing
</div>

3
Клас був би кращим вибором, ніж ідентифікатор тут, з тієї простої причини, що якщо ви використовуєте ідентифікатор, ви можете застосовувати це правило лише до однієї речі на сторінці. Клас дозволив би застосувати його там, де потрібно.
Nick F

12

CSS FILE

@media print
{
    #pager,
    form,
    .no-print
    {
        display: none !important;
        height: 0;
    }


    .no-print, .no-print *{
        display: none !important;
        height: 0;
    }
}

HTML HEADER

<link href="/theme/css/ui/ui.print.css?version=x.x.x" media="print" rel="stylesheet" type="text/css" >

ЕЛЕМЕНТ

<div class="no-print"></div>

10

Ви можете розмістити посилання в div, а потім скористатися JavaScript на тезі прив’язки, щоб приховати div, натиснувши його. Приклад (не перевірений, можливо, його потрібно буде підробити, але ви отримаєте ідею):

<div id="printOption">
    <a href="javascript:void();" 
       onclick="document.getElementById('printOption').style.visibility = 'hidden'; 
       document.print(); 
       return true;">
       Print
    </a>
</div>

Мінусом є те, що після натискання кнопки зникає, і вони втрачають цю опцію на сторінці (хоча завжди є Ctrl + P).

Кращим рішенням було б створити таблицю стилів друку і в межах цього аркуша стилів вказати прихований статус printOptionідентифікатора (або як би ви його називали). Це можна зробити в головному розділі HTML і вказати другу таблицю стилів з медіа-атрибутом.


6

Найкраще зробити це - створити "лише для друку" версію сторінки.

О, чекай ... це вже не 1999 рік. Використовуйте CSS для друку з "display: none".


1
У версіях для друку все ще є деяке значення, оскільки воно чітко показує користувачеві, що вони отримають під час друку, яким можна зловживати за допомогою CSS-методів
annakata

1
До цього можна додати додатковий контент у версії для друку, наприклад, посилання на посилання, колонтитули тощо. У наступні дні багато цього можна досягти і через css.
Стів Перкс

8
@annakata: Користувач вже може отримати це за допомогою "Попереднього перегляду друку" у своєму браузері. Як бонус, саме це і є.
рекурсивна


3

Прийнята діодом відповідь не працює для деяких, якщо не для всіх нас. Я не могла приховати свою кнопку "Друк цієї кнопки" від виходу на папір.

Невелике коригування Клінт Пачл виклику CSS-файлу, додавши його

      media="screen, print" 

і не просто

      media="screen"

вирішує цю проблему. Тому для ясності та тому, що нелегко побачити Клінта Пахла приховану додаткову допомогу в коментарях. Користувач повинен включити ", print" у файл css з потрібним форматуванням.

     <link rel="stylesheet" href="my_cssfile.css" media="screen, print"type="text/css">

а не лише за замовчуванням медіа = "екран".

    <link rel="stylesheet" href="my_cssfile.css" media="screen" type="text/css">

Що я думаю, вирішує цю проблему для всіх.


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