Send section / DIV to print on printer instead of the whole page

I was searching for a way to print a div using JavaScript on StackOverflow - there were many results esp using jQuery using plugins. But this CSS-only way is really an elegant solution. Worthy of posting it here. Credits at the bottom.

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<style type="text/css">
@media print
{
  body *
  {
    visibility: hidden;
  }
  #section-to-print, #section-to-print *
  {
    visibility: visible;
  }
  #section-to-print
  {
    position: absolute;
    left: 0;
    top: 0;
  }
}
</style>
</head>
<body>
<div id="container">
    <header>This is the header</header>
    <h1>Title of the Page</h1>
    <div id="section-to-print" style="border:1px solid black;width:1200px;margin:0 auto;padding:5px 20px">
    DIV / Section to print-only.
    </div>
    <button onclick="window.print()">Print This Page</button>
    <footer>This is the footer</footer>
</div>
</body>
</html>

When in print mode (media query print), the entire body is hidden and at the same time, next, the div to be printed is visible and positioned to top:left.

CTRL+P also works. StackOverflow

No Comments Yet