Wie debuggt man druckbares CSS?

74

Ich verwende die ganze Zeit Firebug und IE Developer Toolbar, um knifflige CSS-Probleme zu beheben. Gelegentlich tritt jedoch ein kniffliger Fehler auf, der nur auftritt, wenn Sie die Seite drucken.

Mit welchen Techniken / Tools diagnostizieren Sie solche Probleme? Gibt es eine Möglichkeit, herkömmliche CSS-Debugging-Tools in der Druckansicht besser zu nutzen?

Aktualisiert: Ich verwende bereits einen PDF-Drucker, um Papierverschwendung zu vermeiden. Mein Problem ist, dass ich nicht mit der rechten Maustaste auf das gedruckte DOM klicken kann. Einige der anderen Antworten unten sind sehr hilfreich, danke. :-)

Dan Fabulich
quelle

Antworten:

49

In Chrome 51:

Chrome-Entwicklertools

Öffnen Sie devtools ( CTRL + F12oder CTRL + SHIFT + I) und klicken Sie auf das ...Menü, More Tools > Rendering settingsum die RenderingRegisterkarte der Entwicklerkonsole zu öffnen (alternativ, wenn die Konsole geöffnet ist, navigieren Sie einfach zu dieser Registerkarte).

Aktivieren und aktivieren Sie auf dieser Registerkarte das Kontrollkästchen für Emulate Media: print.

Simon Sarris
quelle
Achtung: Dies emuliert keine Dinge wie das Ausblenden von Hintergrundbildern / -farben (was die Firefox-Antwort tut).
Gavin S. Yancey
Gibt es einen Druckemulator im IE?
Menna Ramadan
83

Ich habe gerade einen Kommentar von lee-penkman zu einer neuen Funktion in Firefox hier gefunden : Drücken SieShift-F2 in Firefox, um die Browserkonsole (nicht die Javascript-Konsole) zu öffnen, und geben Sie dann ein media emulate print. Funktioniert absolut super!


Update Sept. 2018 : Ab Firefox 62 ist die Entwicklerkonsole verschwunden. Es scheint derzeit keine Möglichkeit zu geben, die Druckstilemulation zu aktivieren.


Update Nov. 2019 : Es scheint, dass es in Firefox 69 wieder eine neue Schaltfläche für die Emulation des Druckstils gibt. Siehe die andere Antwort auf dieser Seite: https://stackoverflow.com/a/58015662/195476

Wolfgang Ulmer
quelle
6
Das hat für mich großartig funktioniert, als ich darauf geachtet habe, was Sie tatsächlich gesagt haben, anstatt davon auszugehen, dass ich es wusste. Dies ist nicht in der Konsole der F12-Tools, sondern in der Entwickler-Symbolleiste. Genau das, wonach ich gesucht habe.
Steve Hiner
Dies ist eine großartige Funktion, die viele Probleme gelöst hätte, die ich in der Vergangenheit hatte ... +1
Erik Čerpnjak
8
Leider verhält sich diese Funktion nicht zu 100% wie die eigentliche Druckfunktion. Dies ist mit media emulate printaktivierter Option, während DIES die aktuelle Druckvorschau von Firefox ist.
Luca Regazzi
1
Auf dem Mac:fn+shift+F2
Nathan Arthur
4
Die Entwickler-Symbolleiste wurde ab Firefox 62 entfernt: developer.mozilla.org/en-US/docs/Tools/GCLI . Siehe stackoverflow.com/questions/47877112/…
Nathan
23

Ich verwende das WebDeveloper-Plugin und das CSS -> CSS nach Medientyp anzeigen -> Drucken, um das CSS wie beim Drucken anzuzeigen. Die Inspektionsdienstprogramme von Firebug arbeiten mit dem vom Plugin gefilterten CSS.

Tvanfosson
quelle
20
Leider ähnelt diese Ansicht nicht einmal im entferntesten dem, was Firefox tatsächlich druckt (beim Drucken werden anscheinend auch Nur-Bildschirm-Stile verwendet). Ich habe keine bessere Option gefunden als die häufige Verwendung der Druckvorschau beim Bearbeiten von Stilen in Firebug.
Tgr
1
Ich denke, das liegt daran, dass es keine Vorstellung von Seiten gibt ... aber zumindest können Sie es sich ansehen, ohne eine Vorschau anzeigen zu müssen.
Gamov
3
Es scheint NUR Druckstile zu verwenden. Ein guter Trick besteht darin, nicht nur Ihre spezifischen Medientypen festzulegen, sondern auch alle anderen Stylesheets auf media = "all, print" zu setzen. Funktioniert für mich :-)
Jeroen
6

Ich benutze Firefox und die Entwickler-Symbolleiste .

Ich verwende das Echtzeit-CSS-Bearbeitungstool in der Taskleiste. Es ist ziemlich nützlich, Ihr CSS im laufenden Betrieb zu ändern, um die Ergebnisse in Echtzeit zu sehen.

Ich benutze auch die Gliederungsfunktion, die das Div und ähnliches mit der Maus auf Ihrer Website verwendet. Wirklich hilfreich, um div zu finden.

Gehen Sie für das Druckproblem zu CSS -> CSS-Stil nach Medien anzeigen -> Drucken

Es gibt viele andere Tools in diesem, ich benutze wahrscheinlich ungefähr 10% davon.

Versuchen Sie vielleicht, etwas Nützliches zu finden.

Michael B.
quelle
5

In Firefox 69 habe ich eine Schaltfläche zum Simulieren von Druckmedien gefunden. Öffnen Sie einfach die Entwicklertools (F12) und klicken Sie auf Inspektor. Die Umschalttaste ist das Symbol ganz links im hervorgehobenen Bereich des Screenshots unten, das wie ein Blatt Papier aussieht.

Geben Sie hier die Bildbeschreibung ein

mzuther
quelle
Dies sollte als FireFox-bezogene Antwort betrachtet werden.
KeepAlive
Ja,
ich habe
Klicken, aber nichts passierte
Andrii
@Andrii Könnten Sie bitte näher darauf eingehen?
Mzuther
4

In Chrome-Entwicklertools (F12 \ Strg (cmd auf Mac) + Umschalt + C): Auf der Registerkarte "Emulation" (ab Chrome 32 IMHO) gibt es eine Registerkarte für "Medien".

Dort können Sie das Kontrollkästchen Medienemulation aktivieren und das Medium auswählen, das Sie emulieren möchten ('Drucken', 'Bildschirm' usw.).

Oleg Belousov
quelle
3

Wie wäre es, wenn Sie nur Ihr letztes Druck-CSS auflisten und die Bedingung "Drucken" aus Ihrem CSS-Link oder Ihrer Importanweisung entfernen? Anschließend debuggen Sie das Druck-CSS im Browserfenster.

Danblaker
quelle
3
#body { width: 8.5in; height:11in;}
Ich
Brilliante Idee! Dies war äußerst effektiv für mich
veeTrain
Hat in Firefox v22 nicht für mich funktioniert. Sah ganz anders aus als der eigentliche Druck.
Reflexiv
Arbeitete in FF37. Das Drucklink-Tag ist das letzte in der Liste der CSS-Link-Tags. Das Medienattribut in diesem Link-Tag wurde von "Drucken" auf "Bildschirm" geändert. Belassen Sie alle anderen Link-Tags wie sie sind.
Rich C
1

Ich verwende den virtuellen Adobe PDF-Drucker, da er einem realen Drucker am nächsten kommt, ohne Tinte und Papier zu verschwenden.

Auf jeden Fall wird empfohlen, ein separates CSS für Ausdrucke mit viel einfacheren Grafiken und weniger Bildern zu verwenden, die Sie nur für Designzwecke verwenden.

evilpenguin
quelle
Ja, es ist das separate CSS, das ich zu debuggen versuche. (PDF-Drucker ist ein guter Tipp; ich benutze das
oft
1

Ich habe immer die Webentwickler-Symbolleiste verwendet (wie in den anderen Antworten beschrieben), aber Firebug scheint von Zeit zu Zeit einige Stile zu vermissen. Also habe ich meinem Browser ein Lesezeichen hinzugefügt und das folgende Javascript als URL des Lesezeichens hinzugefügt. Jetzt kann ich einfach zum Druckstil wechseln, indem ich auf das Lesezeichen klicke:

javascript:(function(){var%20h,a,f;a=document.getElementsByTagName('link');for(h=0;h<a.length;h++){f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&&f.href&&(f.media=='print'||f.media=='screen')){var%20g=f.href.replace(/(&|%5C?)forceReload=\d+/,'');if(f.media.toLowerCase().match(/screen/))f.media="dontshow";if(f.media.toLowerCase().match(/print/))f.media="all";f.href=g+(g.match(/\?/)?'&':'?')+'forceReload='+(new%20Date().valueOf());}}})()

Der obige Code findet alle Stylesheet-Links, testet, ob es sich um media = print handelt, und ändert ihn in media = all (und verbirgt alle media = screen, indem er durch media = dontshow ersetzt wird) und lädt die Stylesheets neu, indem ein Zeit-Token hinzugefügt wird die URL. Das grundlegende Skript zum erneuten Laden stammt von einer anderen Person. Ich habe einen Medienteil hinzugefügt. Das funktioniert super für mich!

Dies wäre die besser lesbare Version der obigen JavaScript-URL zur Erläuterung:

javascript: (function() {
    var h, a, f;
    a = document.getElementsByTagName('link');
    for (h = 0; h < a.length; h++) {
        f = a[h];
        if (f.rel.toLowerCase().match(/stylesheet/) && f.href && (f.media == 'print' || f.media == 'screen')) {
            var g = f.href.replace(/(&|\?)forceReload=\d /, '');
            if (f.media.toLowerCase().match(/screen/)) f.media = "dontshow";
            if (f.media.toLowerCase().match(/print/)) f.media = "all";
            f.href = g(g.match(/\?/) ? '&' : '?')
            'forceReload=' (new Date().valueOf());
        }
    }
})()
Gerfried
quelle
0

Drucken Sie in Microsoft XPS Document Writer, wenn Sie kein Geld bezahlen möchten. Oder verwenden Sie SnagIt, wenn Sie das Geld haben (kostenlose Testversion vor Ort).

Mike Robinson
quelle