Home Programming Easy methods to Create Printer-friendly Pages with CSS — SitePoint

Easy methods to Create Printer-friendly Pages with CSS — SitePoint

Easy methods to Create Printer-friendly Pages with CSS — SitePoint


On this article, we overview the artwork of making printer-friendly internet pages with CSS.

Desk of Contents

Why Do We Want CSS for Printing?

“Who prints internet pages?” I hear you cry! Comparatively few pages will ever be reproduced on paper. However contemplate:

  • printing journey or live performance tickets
  • reproducing route instructions or timetables
  • saving a duplicate for offline studying
  • accessing info in an space with poor connectivity
  • utilizing information in harmful or soiled situations — for instance, a kitchen or manufacturing unit
  • outputting draft content material for written annotations
  • printing internet receipts for bookkeeping functions
  • offering paperwork to these with disabilities who discover it tough to make use of a display screen
  • printing a web page to your colleague who refuses to make use of this newfangled t’web nonsense.

Sadly, printing pages generally is a irritating expertise:

  • textual content will be too small, too massive, or too faint
  • columns will be too slender, too broad, or overflow web page margins
  • sections could also be cropped or disappear completely
  • ink is wasted on pointless coloured backgrounds and pictures
  • hyperlink URLs can’t be seen
  • icons, menus, and ads are printed which might by no means be clicked!

Many builders advocate internet accessibility, but few bear in mind to make the printed internet accessible!

Changing responsive, steady media to paged paper of any measurement and orientation will be difficult. Nonetheless, CSS print management has been doable for a few years, and a fundamental fashion sheet will be accomplished inside hours. The next sections describe well-supported and sensible choices for making your pages printer-friendly.

Print Fashion Sheets

Print CSS can both be:

  1. Utilized along with display screen styling. Taking your display screen kinds as a base, the printer kinds override these defaults as obligatory.
  2. Utilized as separate kinds. The display screen and print kinds are completely separate; each begin from the browser’s default kinds.

The selection will rely in your website/app. Personally, I exploit display screen kinds as a print base more often than not. Nonetheless, I’ve used separate fashion sheets for purposes with radically totally different outputs — resembling a convention session reserving system which displayed a timetable grid on-screen however a chronological schedule on paper.

A print fashion sheet will be added to the HTML <head> after the usual fashion sheet:

<hyperlink rel="stylesheet" href="essential.css" />
<hyperlink rel="stylesheet" media="print" href="print.css" />

The print.css kinds will likely be utilized in addition to display screen kinds when the web page is printed.

To separate display screen and print media, essential.css ought to goal the display screen solely:

<hyperlink rel="stylesheet" media="display screen" href="essential.css" />
<hyperlink rel="stylesheet" media="print" href="print.css" />

Alternatively, print kinds will be included inside an current CSS file utilizing @media guidelines. For instance:

physique {
  margin: 2em;
  colour: #fff;
  background-color: #000;

@media print {

  physique {
    margin: 0;
    colour: #000;
    background-color: #fff;


Any variety of @media print guidelines will be added, so this can be sensible for retaining related kinds collectively. Display screen and print guidelines will also be separated if obligatory:

@media display screen {

  physique {
    margin: 2em;
    colour: #fff;
    background-color: #000;


@media print {

  physique {
    margin: 0;
    colour: #000;
    background-color: #fff;


Testing Printer Output

It’s not essential to kill bushes and use outrageously costly ink each time you need to take a look at your print format! The next choices replicate print kinds on-screen.

Print Preview

Essentially the most dependable possibility is the print preview possibility in your browser. This exhibits how web page breaks will likely be dealt with utilizing your default paper measurement.

Alternatively, you could possibly save or preview the web page by exporting to a PDF.

Developer Instruments

The DevTools (F12 or Cmd/Ctrl + Shift + I) can emulate print kinds, though web page breaks received’t be proven.

In Chrome, open the Developer Instruments and choose Extra Instruments, then Rendering from the three-dot icon menu on the prime proper. Change the Emulate CSS Media to print on the backside of that panel.

In Firefox, open the Developer Instruments and click on the Toggle print media simulation icon on the Inspector tab’s fashion pane:

Firefox print preview mode

Hack Your Media Attribute

Presuming you’re utilizing a <hyperlink> tag to load printer CSS, you can briefly change the media attribute to display screen:

<hyperlink rel="stylesheet" href="essential.css" />
<hyperlink rel="stylesheet" media="display screen" href="print.css" />

Once more, this received’t reveal web page breaks. Don’t overlook to revive the attribute to media="print" when you end testing.

Take away Pointless Sections

Earlier than doing anything, take away and collapse redundant content material with show: none;. Typical pointless sections on paper might embrace navigation menus, hero photographs, headers, footers, varieties, sidebars, social media widgets, and promoting blocks (often something in an iframe):

header, footer, apart, nav, kind, iframe, .menu, .hero, .adslot {
  show: none;

It might be obligatory to make use of show: none !vital; if CSS or JavaScript performance is exhibiting parts in accordance with specific UI states. Utilizing !vital isn’t usually advisable, however we are able to justify its use in a fundamental set of printer kinds which override display screen defaults.

Linearize the Structure

It pains me to say this, however Flexbox and Grid hardly ever play properly with printer layouts in any browser. Should you encounter points, think about using show: block; or related on format packing containers and regulate dimensions as obligatory. For instance, set width: 100%; to span the complete web page width.

Printer Styling

Printer-friendly styling can now be utilized. Suggestions:

  • make sure you use darkish textual content on a white background
  • think about using a serif font, which can be simpler to learn
  • regulate the textual content measurement to 12pt or greater
  • modify paddings and margins the place obligatory. Commonplace cm, mm, or in items could also be extra sensible.

Additional ideas embrace …

Undertake CSS Columns

Commonplace A4 and US Letter paper may end up in longer and fewer readable strains of textual content. Think about using CSS columns in print layouts. For instance:

article {
  column-width: 17em;
  column-gap: 3em;

On this instance, columns will likely be created when there’s no less than 37em of horizontal house. There’s no must set media queries; further columns will likely be added on wider paper.

Use Borders As an alternative of Background Colours

Your template might have sections or call-out packing containers denoted by darker or inverse colour schemes:

callout box on-screen

Save ink by representing these parts with a border:

Take away or Invert Pictures

Customers won’t need to print ornamental and non-essential photographs and backgrounds. You might contemplate a default the place all photographs are hidden until they’ve a print class:

* {
  background-image: none !vital;

img, svg {
  show: none !vital;

img.print, svg.print {
  show: block;
  max-width: 100%;

Ideally, printed photographs ought to use darkish colours on a light-weight background. It might be doable to alter HTML-embedded SVG colours in CSS, however there will likely be conditions the place you could have darker bitmaps:

dark chart

A CSS filter can be utilized to invert and regulate colours within the print fashion sheet. For instance:

img.darkish {
  filter: invert(100%) hue-rotate(180deg) brightness(120%) distinction(150%);

The consequence:

light chart

Add Supplementary Content material

Printed media typically requires further info which might not be obligatory on-screen. The CSS content material property will be employed to append textual content to ::earlier than and ::after pseudo-elements. For instance, show a hyperlink’s URL in brackets after the textual content:

a::after {
  content material: " (" attr(href) ")";

Or you may add print-only messages:

essential::after {
  content material: "Copyright website.com";
  show: block;
  text-align: middle;

For extra complicated conditions, think about using a category resembling print on parts which ought to solely be seen when printed,. For instance:

<p class="print">Article printed at 1:23pm 5 September 2020. Please see https://website.com/web page for the newest model.</p>

The CSS:

.print {
  show: none;

@media print {

  .print {
    show: block;


Word: most browsers show the URL and present date/time on the printed web page’s header and/or footer, so there’s hardly ever a must generate this info in code.

Web page Breaks

The CSS3 properties break-before and break-after enable you management how web page, column, or area breaks behave earlier than and after a component. Assist is superb, however older browsers might use the same page-break-before and page-break-after properties.

The next break-before and break-after values can be utilized:

  • auto: the default — a break is permitted however not pressured
  • keep away from: keep away from a break on the web page, column or area
  • avoid-page: keep away from a web page break
  • web page: drive a web page break
  • all the time: an alias of web page
  • left: drive web page breaks so the following is a left web page
  • proper: drive web page breaks so the following is a proper web page

Instance: drive a web page break instantly previous to any <h1> heading:

h1 {
  break-before: all the time;

Word: be cautious of over-using web page breaks. Ideally, printer output ought to use as few pages as doable.

The break-inside (and older page-break-inside) property specifies whether or not a web page break is permitted inside a component. The generally supported values:

  • auto: the default — a break is permitted however not pressured
  • keep away from: keep away from an inside break the place doable
  • avoid-page: keep away from an inside web page break the place doable

This may be preferable to specifying web page breaks, since you should utilize as little paper as doable whereas avoiding web page breaks inside grouped information resembling tables or photographs:

desk, img, svg {
  break-inside: keep away from;

The widows property specifies the minimal variety of strains in a block that should be proven on the prime of a web page. Think about a block with 5 strains of textual content. The browser needs to make a web page break after line 4 so the final line seems on the prime of the following web page. Setting widows: 3; breaks on or earlier than line two so no less than three strains carry over to the following web page.

The orphans property is much like widows besides it controls the minimal variety of strains to point out on the backside of a web page.

The box-decoration-break property controls ingredient borders throughout pages. When a component with a border has an inside web page break:

  • slice: the default, splits the format. The highest border is proven on the primary web page and the underside border is proven on the second web page.
  • clone: replicates the margin, padding, and border. All 4 borders are proven on each pages.

Lastly, CSS Paged Media (@web page) has restricted browser assist however gives a option to goal particular pages so various margins or breaks will be outlined:

@web page {
  margin: 2cm;

@web page :first {
  margin-top: 6cm;

@web page :left {
  margin-right: 4cm;

@web page :proper {
  margin-left: 4cm;

The CSS web page break properties will be positioned inside your display screen or print kinds as a result of they solely have an effect on printing, however I like to recommend utilizing them in print CSS for readability.

Bear in mind that web page break management is little greater than a suggestion to the browser. There’s no assure a break will likely be pressured or prevented as a result of format is restricted to the confines of the paper.

Printing Pains

Management over printing internet media will all the time be restricted, and outcomes can differ throughout browsers. That mentioned:

  • printer-friendly fashion sheets will be retro-fitted to any website
  • most printer styling will work within the majority of browsers
  • print kinds won’t have an effect on or break current performance
  • the event prices are minimal.

Including a couple of web page breaks and eradicating pointless sections will delight customers and lift your website above rivals. Add it to your to-do listing!

For extra superior CSS data, learn our e book CSS Grasp, third Version.

FAQs About Creating Printer-friendly Pages with CSS

Making a CSS print stylesheet is vital for controlling the looks of internet pages after they’re printed. Let’s finish by overlaying a few of the regularly requested questions on methods to create printer-friendly pages with CSS.

What’s CSS for print?

It’s doable to print internet pages straight out of your browser, however a printed internet web page typically received’t appear like the web page you see on the display screen. Net pages are styled with CSS, and CSS will also be used to supply styling for the printed web page. Nonetheless, internet web page kinds don’t often translate nicely to print, so it’s vital to jot down CSS kinds particularly for the printed web page. CSS for print is a set of kinds particularly designed to assist printers format the format of the printed web page.

How can I exploit CSS for print?

Net web page CSS will routinely apply to the printed model of an internet web page, however typically with sudden or undesirable outcomes. CSS for print acknowledges the distinctive constraints of the printed web page, in distinction to the extra versatile browser surroundings. Setting kinds for print includes serious about how parts will finest lay out on a printed web page. That will embrace hiding parts that aren’t related to print, resembling menus and the like, styling hyperlinks in a means that makes the URL is seen on the printed web page, and eradicating background photographs and font colours that will not be related to a printed model of the net web page.

How do I arrange a CSS print stylesheet?

There are two fundamental methods to serve up print kinds in CSS: through a separate stylesheet, or through a media question. CSS print kinds will be saved in a separate stylesheet that’s linked to an internet web page within the <head> part of the doc:

<hyperlink rel="stylesheet" media="print" href="print.css" />

CSS print kinds will be positioned inside a stylesheet, together with kinds for different media, through media queries:

What are some widespread use instances for print stylesheets?

Frequent use instances for print stylesheets embrace:

  • Adjusting font sizes and kinds for readability on paper.
  • Eradicating or hiding sure parts that aren’t related when printed (resembling navigation menus).
  • Guaranteeing that photographs and background colours don’t print by default.
  • Specifying web page breaks to manage how content material is split throughout pages.

How can I conceal particular parts within the print model?

You’ll be able to conceal particular parts within the print model utilizing CSS by setting the show property to none. For instance:

@media print {
    .hide-on-print {
      show: none;

How do I specify web page breaks in a print stylesheet?

You’ll be able to specify web page breaks utilizing the page-break-before and page-break-after CSS properties. For instance:

@media print {
  .page-break {
    page-break-before: all the time;

Can I alter the web page margins for printed paperwork?

Sure, you may change the web page margins for printed paperwork utilizing the @web page rule in your print stylesheet. For instance:

How can I make sure that photographs and background colours don’t print?

You’ll be able to stop photographs and background colours from printing through the use of CSS properties like background-image and background-color with the none worth in your print stylesheet. For instance:

@media print {
  img {
    show: none;

physique {
    background-color: white;

Is it doable to alter the font shapes and sizes for printing?

Sure, you may change font shapes and sizes for printing by specifying totally different kinds inside your print stylesheet. For instance:

@media print {
  physique {
    font-size: 12pt;
    font-family: Arial, sans-serif;

How do I take a look at my print stylesheet earlier than printing?

You’ll be able to take a look at your print stylesheet through the use of your internet browser’s print preview function. Most trendy browsers will let you see how the web page will look when printed with out truly printing it.


Supply hyperlink


Please enter your comment!
Please enter your name here