8 Stimmen

HTML/CSS - Warum wird die Hintergrundfarbe beim Drucken weiß?

Meine Hintergrundfarbe oder sogar die Schriftfarben meiner Elemente werden beim Drucken plötzlich weiß. Hier ist ein Beispiel für ein Markup:

<div id="ActionPanel">
    <input type="button" onclick="javascript:window.print();" value="Print"> 
</div>

<p id="P1">
   Hello World! 
</p>

<p id="P2">
   Hello Web! 
</p>

<p id="P3">
   Hello StackOverflow 
</p>

und hier ist das CSS

@media all 
{
   body
   {
       background-color:green;
   }

   #P1
   {
       background-color:#f00;    
   } 
}

@media print 
{
   #ActionPanel
   {
       visibility:hidden;
   } 
}

11voto

Madara's Ghost Punkte 165354

Alle Hintergründe werden in der gedruckten Version automatisch entfernt. Auf diese Weise wird Tintenverschwendung vermieden.

Sie können sie jedoch in Ihrem Browser aktivieren. (Wie man das macht, hängt von den einzelnen Browsern ab).

4voto

Steve Quezadas Punkte 704

Es gibt keine Möglichkeit, Hintergrundfarben zu drucken, ohne manuell eine Einstellung in Ihrem Browser vorzunehmen. Für manche Menschen ist dies jedoch keine Option. Die beste Lösung, die ich finden konnte, ist ziemlich unelegant. Anstatt "background-color" zu verwenden (das nicht gedruckt wird), sollten Sie ein div-Tag mit einem großen farbigen Rahmen erstellen. Die Sache ist die, dass farbige Rahmen korrekt gedruckt werden können. Legen Sie dann an der Stelle, an der die hervorgehobene Farbe angezeigt wird, ein weiteres div-Tag mit dem Text darauf an. Nicht sehr elegant, aber es funktioniert.

Es ist am besten, sowohl das Text-Div als auch das Highlight-Div innerhalb eines dritten Divs zu platzieren. Die inneren Divs sollten die Position "absolut" haben und das äußere Div die Position "relativ". Dieser Beispielcode wurde sowohl in Firefox als auch in Chrome getestet:

<style type="text/css">
  #outer_box {
      position: relative; 
      border: 2px solid black; 
      width: 500px; 
      height:300px; 
  }

  #yellow_highlight {
      position: absolute; 
      width: 0px;
      height: 30px;
      border-left: 300px;
      border-color: yellow; 
      border-style: solid; 
      top: 0; 
      left: 0px
  }

  #message_text {
      position: absolute; 
      top: 0; 
      left: 0px;
  }
</style>

<body>
  <div id="outer_box">
    <div id="yellow_highlight">&nbsp;</div>
    <div id="message_text">hello, world!</div>
  </div>
</body>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X