Suggerimenti per il debug dei fogli di stile di stampa?


238

Di recente ho lavorato su un foglio di stile di stampa per un sito Web e mi sono reso conto di non essere in grado di modificare in modo efficace. Una cosa è avere un ciclo di ricarica per lavorare sul layout su schermo:

  • cambia codice
  • command-scheda
  • ricaricare

ma l'intero processo diventa molto più arduo quando si tenta di stampare:

  • cambia codice
  • command-scheda
  • ricaricare
  • Stampa
  • strizzare gli occhi all'immagine di anteprima di stampa
  • apri il PDF in Anteprima per ulteriori controlli

Ci sono strumenti che mi sto perdendo qui? L'ispettore di WebKit ha una casella di controllo "fingi che si tratti di supporti di paging"? C'è qualche magia che Firebug ( brivido ) può fare?


4
Che ne dici della funzione "Anteprima di stampa" di un browser che la supporta (ad es. Firefox)? Ho (principalmente accuratamente) eseguito il debug di alcune pagine Web per stamparle.
Halil Özgür,


3
In Firefox, apri la "Barra degli strumenti per sviluppatori" con Shift + F2, digita "media emulate print" (o "emu" + Tab + "print"), premi Invio.
Marcello Nuccio,


@MarcelloNuccio Questa dovrebbe essere una risposta. stackoverflow.com/a/28873496/1696030 ha ottenuto alcuni voti positivi per il confronto. "Developer Toolbar" è un po 'fuorviante in quanto è un'interfaccia a riga di comando.
Volker E.

Risposte:


327

C'è un'opzione per quello nell'ispettore di Chrome.

  1. Apri la finestra di ispezione DevTools (mac: Cmd+ Shift+ C, windows: Ctrl+ Shift+ C)
  2. Fare clic sull'icona Attiva / disattiva modalità dispositivoAttiva / disattiva il pulsante modalità dispositivo , situata nell'angolo in alto a sinistra del pannello DevTools. (windows: Ctrl+ Shift+ M, mac: Cmd+ Shift+ M).
  3. Fare clic sull'icona Altre sostituzioni più sostituzioni nell'angolo in alto a destra della finestra del browser per aprire il cassetto di Devtools.
  4. Quindi, seleziona Media nel riquadro di emulazione e seleziona la casella di controllo Media CSS .

    inserisci qui la descrizione dell'immagine

Questo dovrebbe fare il trucco.

Aggiornamento: i menu sono stati modificati in DevTools. Ora può essere trovato facendo clic sul menu "tre punti" nell'angolo in alto a destra> Altri strumenti> Impostazioni rendering> Emula media> stampa.

Fonte: pagina di Google DevTools *


5
Grazie, è quello che stavo cercando, non sono riuscito a trovarlo: / La scorciatoia non funziona più però. Faccio solo l'icona dell'ingranaggio F12 + nell'angolo in basso a destra, quindi l'impostazione è sotto la scheda Sostituzioni,
Aurelien,

18
purtroppo non è preciso al 100% :(
maazza,

9
In Chrome 32.0.1700.14 beta-m Auramanca "Emulate CSS media [print]" :(
Rocket Hazmat,

11
Questa risposta deve essere corretta. A partire da Chrome 48, l'emulatore del foglio di stile di stampa non è più in "Emulazione" ma in "Rendering".
Chharvey,

13
Menu a tre punti (lato destro) nella
finestra di

74

Presumo che tu voglia il maggior controllo possibile della finestra stampata senza usare un approccio da HTML a PDF ... Usa lo schermo @media per eseguire il debug - Stampa @media per css

I browser moderni possono darti una rapida visione di ciò che accadrà al momento della stampa usando pollici e punti in a @media query.

@media screen and (max-width:8.5in) { /* resize your window until the event is triggered */
    html { width:8.5in; }
    body { font: 9pt/1.5 Arial, sans-serif; } /* Roughly 12px font */
 ...
}

Una volta che il tuo browser visualizza "pollici" avrai un'idea migliore di cosa aspettarti. Questo approccio dovrebbe quasi terminare il metodo di anteprima di stampa. Tutte le stampanti funzioneranno con pte le inunità e l'utilizzo della tecnica @media ti consentirà di vedere rapidamente cosa accadrà e di adeguarti di conseguenza. Firebug (o equivalente) accelererà assolutamente questo processo. Quando hai aggiunto le modifiche a @media, hai tutto il codice necessario per un file CSS collegato usando l' media = "print"attributo - basta copiare / incollare le regole dello schermo @media nel file di riferimento.

In bocca al lupo. Il web non è stato creato per la stampa. Creare una soluzione che offra tutti i tuoi contenuti, a volte è impossibile creare stili uguali a quelli visualizzati nel browser. Ad esempio, un layout fluido per un pubblico prevalentemente 1280 x 1024 non si traduce sempre facilmente in una bella e ordinata stampa laser 8.5 x 11.

Riferimento W3C per purusal: http://www.w3.org/TR/css3-mediaqueries/


Volevo solo commentare che questo metodo è abbastanza intelligente. Molto più facile ridimensionare leggermente la finestra per "attivare" gli stili di stampa piuttosto che utilizzare una funzione di anteprima di stampa. Anche se a volte devi ancora farlo per la compatibilità con IE e simili, questo è ottimo per l'iterazione iniziale degli stili di stampa.
Chucknelson,

@Mandrino. Grazie uomo. Ehi, ho realizzato che la mia demo era offline, quindi ho creato un violino per questo. jsfiddle.net/dNEmT
Dawson,

20

Chrome 48 è possibile eseguire il debug degli stili di stampa nella scheda Rendering .

Fai clic sull'icona del menu in alto a destra nella finestra di ispezione e Impostazioni rendering .

Modifica
Per Chrome 58 la posizione è stata cambiata in Impostazioni Web> Menu> Altri strumenti> Rendering


4
Chrome 49: F12 (console per sviluppatori) -> ESC (console) -> Rendering -> Emula supporti di stampa
user1477388

19

In Chrome v41, è lì, ma in un punto leggermente diverso.

inserisci qui la descrizione dell'immagine


3
Nella v53 è invece nella scheda Rendering, in fondo c'è una casella di controllo per Emulate Media che abiliterà un menu a discesa in cui è possibile selezionare Stampa in, simile allo screenshot fornito
James Gray

16

C'è un modo semplice per eseguire il debug del foglio di stile di stampa senza cambiare alcun attributo multimediale nel tuo codice HTML (ovviamente, come sottolineato, non risolve il problema di larghezza / pagine):

  • Usa l'estensione Firefox + Web Developer.
  • Nel menu Sviluppatore Web, selezionare CSS / Visualizza CSS per tipo di supporto / stampa
  • Torna al menu Sviluppatore Web, seleziona Opzioni / Funzioni persistenti

Ora stai visualizzando il CSS di stampa e puoi ricaricare la tua pagina indefinitamente. Una volta terminato, deseleziona "Caratteristiche persistenti" e ricaricato, otterrai di nuovo lo schermo CSS.

HTH.


7
rende sostanzialmente diverso dall'anteprima di stampa. forse questa è una stranezza nel mio css. in ogni caso, non risolve il problema. grazie comunque.
Heartpunk

Sì, completamente diverso anche per me. Ho seguito questo jsfiddle ( jsfiddle.net/2wk6Q/3 ) e l'anteprima di stampa mostra pagine con margini rossi, ma questo è completamente diverso.
dualità_

1
Devo dire che questa "soluzione alternativa" funziona meglio per me. Forse sono fortunato ed è per questo che ci sono solo piccole differenze tra la schermata di stampa nativa e la schermata di stampa degli sviluppatori Web, ma sicuramente mi ha aiutato a scoprire perché compaiono lacune e cosa è più importante - posso passare attraverso il codice con Firebug e vedere cosa sta succedendo il
Erik Čerpnjak il

13

L'interfaccia utente di Chrome è di nuovo diversa dalla v53.

Non ho bisogno di usare questa funzione spesso, ma ogni volta che lo faccio, mi ci vuole un'eternità per capire dove il team Chrome l'ha spostata dall'ultima volta che ho bruciato i cicli cercando di rintracciarla.

Notare che è il menu ... nel riquadro Strumenti Dev non il menu ... nel riquadro Browser Chrome.

Anteprima della stampante dalla v53 su MacOS

Ora scorri verso il basso nella sezione Rendering. Spesso è sotto l'ovile.


1
Mi hai appena salvato giorni di debug print.css. Sei fantastico!
Zazvorniki,

8

In seguito alla risposta di rflnogueira, le impostazioni di Chrome correnti (40.0. *) Appariranno come di seguito:

emulazione css con stampa cromata


Mi ci è voluto un po 'di tempo per identificare la scheda "Media". Ho continuato a cercarlo nella scheda "Dispositivo".
Lorin Rivers,

5

Mostra solo il foglio di stile di stampa nel tuo browser usando media="screen"durante il debug. La vista di anteprima di stampa utilizza lo stesso motore di rendering della normale modalità di navigazione in modo da poter ottenere risultati accurati usando quello.


14
Tranne che la normale modalità di navigazione non ha pagine, quindi non ho idea di come scorrerà il contenuto. La modalità di navigazione normale ha una larghezza di un certo numero di pixel, mentre una pagina ha una larghezza di un certo numero di pollici o centimetri. Esistono differenze fondamentali indipendenti dall'implementazione tra schermo e stampa. Il debug tra questi è ciò che sto cercando.
Jim Puls

1
Su Chrome il rendering è piuttosto diverso usando questo solo suggerimento. Non funzionerà
Heartpunk,

La larghezza della "pagina" non è difficile da definire, è l'altezza che è davvero difficile. Sia i browser che le stampanti avranno un ruolo nel mal di testa da 11 pollici. Le pagine Web sono di lunghezza continua. Senza una garanzia del tipo di dispositivo di output e del browser, non credo che lo colpirai mai ogni volta. L'uso di un approccio da HTML a PDF funzionerebbe, ma questo va oltre lo scopo della tua domanda.
Dawson,

3

2019 - Istruzioni aggiornate

  1. Apri la finestra di ispezione di Chrome
    • Da Mac => option+ command+i
    • Da Windows =>F12
  2. Fai clic sui 3 punti piccoli, customize and control devTools inserisci qui la descrizione dell'immagine

  3. Selezionare More Tools

  4. Selezionare Rendering

  5. Scorri verso il basso fino a Emulate CSS Media

  6. Seleziona printdalla freccia in giù

inserisci qui la descrizione dell'immagine


0

Se hai una funzione di stampa che riscrive il contenuto della pagina in una nuova finestra a cui fa riferimento il tuo foglio di stile di stampa, avrai un'idea molto migliore di come apparirà sulla carta e sarai in grado di eseguirne il debug con artisti del calibro di firebug.

Ecco un esempio di come ciò può essere fatto con JavaScript / jquery

        $("#Print").click(function () {
            var a = window.open('', '', 'scrollbars=yes,width=1024,height=768');
            a.document.open("text/html");
            a.document.write("<html><head>");
            a.document.write('<link rel="stylesheet" href="css/style.css" />');
            a.document.write('<link rel="stylesheet" href="css/print.css" />');
            a.document.write("</head><body>");
            a.document.write($('#Content').html());
            a.document.write('</body></html>');
            a.document.close();
            a.print();
        });

2
Il problema con questo approccio è che se un utente seleziona semplicemente "Stampa ..." nel proprio browser, questa funzione JavaScript non verrà mai invocata.
Ken Liu,

non è necessario mostrare all'utente la funzione di stampa, se lo si desidera è sufficiente utilizzarla per scopi di debug
Blowsie

Questa è una soluzione troppo ingegnerizzata per qualcosa che il browser già fa. Usa a media="print"e media="screen"rispettivamente per i tuoi fogli di stile e usa il menu del browser o le combinazioni di tasti per invocare l'anteprima di stampa. (In questo caso non è diverso dall'apertura di un popup) E se stai solo eseguendo il debug, applica l' media="screen"attributo ai tuoi stili di stampa fino al termine del debug.
ORyan,

-1

inserisci qui la descrizione dell'immagine

In DreamWeaver c'è una barra degli strumenti che mostra praticamente qualsiasi opzione di rendering desiderata: schermo, stampa, supporti portatili, schermo di proiezione, supporti TV, fogli di stile meritn time, ecc. Questo è ciò che uso soprattutto perché: mostra istantaneamente un'anteprima con 1 semplice pressione di un pulsante.


1
buono a sapersi, ma richiederebbe l'utilizzo di un motore di rendering diverso da quello per cui sviluppiamo, e richiede ancora più di una ricarica. grazie comunque.
Heartpunk

1
Già nel 2011 si trattava di un software proprietario, solo per l'acquisto, solo su piattaforme limitate, che era necessario pagare per ottenere la funzionalità richiesta per il debug del Web aperto.
Volker E.

-7

Uso le macro per inviare ripetutamente i tasti premuti e i clic del mouse. In Windows, AutoHotKey è un ottimo software e in OS X è possibile leggere informazioni su Automator come un AHK alternativo per OsX .

Sotto Windows (sostituisci Ctrl con Cmd sotto OS X) "Ctrl-s / passa alla finestra Fx ovunque sia nell'elenco delle finestre aperte / Ctrl-r" associato a 1 tasto inutilizzato evita la frustrazione da compiti poco interessanti e alla fine salverà le mie braccia da RSI :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.