Как скрыть элемент при печати веб-страницы?

У меня есть ссылка на моей веб-странице, чтобы распечатать веб-страницу. Однако ссылка также видна в самой распечатке.

Есть ли код javascript или HTML, который скрывает кнопку ссылки, когда я нажимаю ссылку для печати?

Пример:

 "Good Evening"
 Print (click Here To Print)

Я хочу скрыть эту этикетку «Печать», когда она печатает текст «Добрый вечер». Ярлык «Печать» не должен отображаться на самой распечатке.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
489
0
474 304
10

Ответы 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 и указать вторую таблицу стилей с атрибутом мультимедиа.

Лучше всего использовать использовать таблицу стилей специально для печати и установить для его атрибута media значение print.

В нем покажите / скройте элементы, которые вы хотите распечатать на бумаге.

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

Здесь у вас также должен быть css, чтобы не отображать другое содержимое оболочки, изменить семейство шрифтов на лучшее значение, удалить ширину, чтобы обеспечить полное использование страницы. Если вы установите для своей основной таблицы стилей значение media = "screen", вы можете рассматривать свою таблицу стилей печати как новую площадку для игры.

Steve Perks 29.12.2008 20:54

Абсолютно. При таком подходе вы можете либо просто удалить «Щелкните здесь, чтобы получить версию для печати», либо добавить «Эта страница предназначена для печати» или что-то подобное. Как сказал Стив Перкс, хорошей практикой является удаление всего ненужного контента, такого как навигация, реклама и тому подобное. Включите только основное содержание страницы.

Arve Systad 03.09.2009 19:51

В вашей таблице стилей добавьте:

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

Затем добавьте class='no-print' (или добавьте класс без печати к существующему оператору класса) в свой HTML-код, который вы не хотите отображать в печатной версии, например, вашу кнопку.

media = "print" по какой-то причине не работало на определенном сайте, но этот трюк сработал. Престижность!

mwilcox 31.01.2012 20:18

Это неполный ответ. У вас должно быть два медиа-раздела. Печать @media и экран @media. В разделе печати вы размещаете свои стили для печати. В разделе экрана экрана вы размещаете свои стили для трафаретной печати. У вас даже может быть несколько разделов экрана для разных разрешений. В принципе, если вы просто добавите то, что указано в этом ответе, это не сработает. Поверьте, я пробовал. Так как же он получил 69 голосов?

Codeguy007 17.11.2012 01:39

на самом деле, это действительно работает, если вы просто используете код, который дает. я только что пробовал в firefox. так что, по крайней мере, в современных браузерах это решение.

luschn 21.02.2013 14:21

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

Philipp 09.04.2013 21:17

Это может работать или не работать в зависимости от указанного носителя. Например, чтобы объединить стили экрана и печати в одной таблице стилей, а затем использовать медиа-запросы в этой таблице стилей, как предполагает этот ответ, вы должны указать оба типа медиа: screen и print: <link rel = "stylesheet" href = "all.css" media = "screen, print" type = "text/css">

Clint Pachl 28.05.2013 01:56

@ Codeguy007: Я не понимаю твою точку зрения. @media screen нужен только в том случае, если вы хотите определить стили только для экрана, но здесь дело обстоит не так: по умолчанию отображаются все элементы, и путем определения стиля только для печати, который скрывает элемент, вполне достаточно, чтобы он по-прежнему отображался на экране. экран.

chiccodoro 30.08.2013 16:42

@Chiccodoro У нас были проблемы с некоторыми браузерами, когда мы этого не делали. Возможно, в спецификации сказано, что вам не нужно определять «@media screen», но как только мы добавили «@media print», страница перестала работать должным образом в некоторых браузерах.

Codeguy007 30.08.2013 19:28

Лучше всего создать версию страницы «только для печати».

Ой, подожди ... это уже не 1999 год. Используйте CSS для печати с «display: none».

в версиях для печати все еще есть некоторая ценность, потому что она ясно показывает пользователю, что они получат, когда напечатают, что может быть использовано с помощью методов CSS.

annakata 23.12.2008 18:50

Кроме того, вы можете включать в печатную версию дополнительный контент, например ссылки на ссылки, нижние колонтитулы и т. д. Однако в ближайшие дни многое из этого будет достигнуто и с помощью CSS.

Steve Perks 29.12.2008 20:50

@annakata: пользователь уже может получить это, используя «Предварительный просмотр» в своем браузере. В качестве бонуса это действительно то, для чего он нужен.

recursive 08.05.2012 01:53

CSS-ФАЙЛ

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


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

ЗАГОЛОВОК HTML

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

ЭЛЕМЕНТ

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

Bootstrap 3 имеет вызов свой класс своя для этого:

hidden-print

Это определяется так:

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

Вам не нужно определять это самостоятельно.


В Бутстрап 4 это изменилось на:

.d-print-none

Отличное решение Bootstrap 4. Работает как шарм.

Diego Victor de Jesus 02.04.2019 06:54

Не могу поверить, как я до сих пор пропустил решение начальной загрузки .. Спасибо!

ReturnTable 30.10.2019 07:46
! important спас меня.
Evan Hu 26.02.2020 08:35

Вот простое решение поместите этот CSS

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

а вот HTML

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

Класс был бы здесь лучшим выбором, чем id, по той простой причине, что если вы используете id, вы можете применить это правило только к одной вещи на странице. Класс позволит вам применять его везде, где это необходимо.

Nick F 01.08.2017 19:55

И я считаю, что вы можете изменить display: none на visibility: hidden, если вы хотите, чтобы элементы занимали то же место, а просто не отображались.

alfadog67 07.07.2020 22:48

Итак, простое и работоспособное решение. Раньше я думал, что мы не можем повлиять на печатную версию страницы.

Victor Sokoliuk 08.09.2020 10:01

@media print {
  .no-print {
    visibility: hidden;
  }
}
<div class = "no-print">
  Nope
</div>

<div>
  Yup
</div>

Принятый ответ Диода не работает для некоторых, если не всех из нас. Я все еще не мог скрыть свою кнопку «Распечатать», чтобы она не попала на бумагу.

Небольшая корректировка Клинтом Пахлом вызова файла css путем добавления

      media = "screen, print" 

и не только

      media = "screen"

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

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

а не только media = "screen" по умолчанию.

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

Думаю, это решает эту проблему для всех.

Если у вас есть Javascript, который мешает стилю отдельных элементов, таким образом переопределяя !important, я предлагаю обработать события onbeforeprint и onafterprint. https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeprint

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