Print Stylesheet - Converting inputs to text

I came across this searching for information on how to style my forms and a few other things.

After messing with some CSS I figured out a CSS only method that works for me.

My forms all have styling that involved color background and a border that is black.

In my print CSS file I copied my form css and changed all of the colors (not the text itself) to white. In other words it hides my text box and displays only the text.

Original CSS - #form textarea, #form input, #form select{ border:1px solid #ddd; color:#313131; }

Print CSS - #form textarea, #form input, #form select{ border:1px solid #fff; color:#fff; }

Works like a charm =>

Hope this Helps


Nope, I don't think this can be done without some scripting. But the scripting would be really easy to achieve with a Framework like Jquery:

  • For each input element, you would create a <span> next to it and give it a class that is hidden in the media="screen" stylesheet, and visible in media="print".

  • The input element itself would get a class that works the other way round, visible in screen and hidden in print.

  • Each input element would get a change event that updates the neighboring span.

I don't have the JQuery routine yet to pull this out of my sleeve, and not the time to put it together right now, but it is definitely solvable and still quite unobtrusive - no need to execute any scripting when the user starts printing.

I bet if you re-tag the question or ask a new one, one of our resident JQuery gurus will take a look at it :)


If you are using Bootstrap:

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

  .form-control
  {
    border: 0;
    padding:0;
    overflow:visible;
  }
}

input { border-style: none; display: inline}