Des suggestions pour déboguer les feuilles de style d'impression?

238

J'ai récemment travaillé sur une feuille de style d'impression pour un site Web, et je me suis rendu compte que j'étais à court de moyens efficaces pour le modifier. C'est une chose d'avoir un cycle de rechargement pour travailler sur la disposition à l'écran:

  • changer le code
  • onglet de commande
  • recharger

mais tout ce processus devient beaucoup plus difficile lorsque vous essayez d'imprimer:

  • changer le code
  • onglet de commande
  • recharger
  • impression
  • plisser les yeux sur l'aperçu avant impression
  • ouvrir le PDF dans l'aperçu pour une inspection plus approfondie

Y a-t-il des outils qui me manquent ici? L'inspecteur de WebKit a-t-il une case à cocher «faire semblant qu'il s'agit d'un média paginé»? Y a-t-il de la magie que Firebug ( frisson ) peut faire?

Jim Puls
la source
4
Que diriez-vous de la fonction "Aperçu avant impression" d'un navigateur qui le prend en charge (par exemple Firefox)? J'ai (surtout avec précision) débogué certaines pages Web pour les imprimer.
Halil Özgür
2
doublon possible de Comment déboguez-vous le CSS imprimable?
Outis
3
Dans Firefox, ouvrez la "Developer Toolbar" avec Shift + F2, tapez "media emulate print" (ou "emu" + Tab + "print"), Enter.
Marcello Nuccio
@MarcelloNuccio Cela devrait être une réponse. stackoverflow.com/a/28873496/1696030 a obtenu quelques votes positifs pour la comparaison. «Developer Toolbar» est un peu trompeur car c'est une interface de ligne de commande.
Volker E.

Réponses:

327

Il existe une option pour cela dans l'inspecteur de Chrome.

  1. Ouvrez l'inspecteur DevTools (mac: Cmd+ Shift+ C, windows: Ctrl+ Shift+ C)
  2. Cliquez sur l' icône Basculer en mode appareilBasculer le bouton de mode d'appareil , située dans le coin supérieur gauche du panneau DevTools. (fenêtres: Ctrl+ Shift+ M, mac: Cmd+ Shift+ M).
  3. Cliquez sur l' icône Plus de remplacements plus de remplacements dans le coin supérieur droit de la fenêtre du navigateur pour ouvrir le tiroir devtools.
  4. Ensuite, sélectionnez Média dans le tiroir d'émulation et cochez la case Média CSS .

    entrez la description de l'image ici

Cela devrait faire l'affaire.

Mise à jour: les menus ont changé dans DevTools. Il peut maintenant être trouvé en cliquant sur le menu "trois points" dans le coin supérieur droit> Plus d'outils> Paramètres de rendu> Émuler le support> imprimer.

Source: page Google DevTools *

Rafael Nogueira
la source
5
Merci, c'est ce que je cherchais, je ne l'ai pas trouvé: / Le raccourci ne fonctionne plus cependant. Je fais juste l'icône d'engrenage F12 + dans le coin inférieur droit, puis le paramètre est sous l'onglet Overrides,
Aurelien
18
malheureusement, il n'est pas précis à 100% :(
maazza
9
Dans Chrome 32.0.1700.14 beta-m Aura, "Émuler le support CSS [impression]" est manquant :(
Rocket Hazmat
11
Cette réponse doit être corrigée. Depuis Chrome 48, l'émulateur de feuille de style d'impression n'est plus sous "Émulation" mais sous "Rendu".
chharvey
13
Menu à trois points (côté droit) dans l'inspecteur> Plus d'outils> Paramètres de rendu> Émuler le support> imprimer
allicarn
74

Je suppose que vous souhaitez contrôler autant que possible la fenêtre imprimée sans utiliser une approche HTML vers PDF ... Utilisez l'écran @media pour déboguer - @media print pour le css final

Les navigateurs modernes peuvent vous donner un aperçu rapide de ce qui va se passer au moment de l'impression en utilisant les pouces et les points dans un @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 */
 ...
}

Une fois que votre navigateur affiche "pouces", vous aurez une meilleure idée de ce à quoi vous attendre. Cette approche devrait pratiquement mettre fin à la méthode d'aperçu avant impression. Toutes les imprimantes fonctionneront avec les unités ptet in, et l'utilisation de la technique @media vous permettra de voir rapidement ce qui va se passer et de les ajuster en conséquence. Firebug (ou équivalent) accélérera absolument ce processus. Lorsque vous avez ajouté vos modifications à @media, vous avez tout le code dont vous avez besoin pour un fichier CSS lié en utilisant l' media = "print"attribut - il suffit de copier / coller les règles d'écran @media dans le fichier référencé.

Bonne chance. Le Web n'a pas été conçu pour être imprimé. Créer une solution qui fournit tout votre contenu, des styles égaux à ce qui est vu dans le navigateur peut parfois être impossible. Par exemple, une mise en page fluide pour un public majoritairement 1280 x 1024 ne se traduit pas toujours facilement en une impression laser agréable et soignée de 8,5 x 11.

Référence W3C pour purusal: http://www.w3.org/TR/css3-mediaqueries/

Dawson
la source
Je voulais juste dire que cette méthode est assez intelligente. Il est beaucoup plus facile de redimensionner légèrement la fenêtre pour "basculer" les styles d'impression que d'utiliser une fonction d'aperçu avant impression. Bien que vous deviez toujours le faire parfois pour la compatibilité IE et autres, c'est idéal pour l'itération initiale des styles d'impression.
chucknelson
@Mandrin. Merci mec. Hé, j'ai réalisé que ma démo était hors ligne, alors j'ai créé un violon pour ça. jsfiddle.net/dNEmT
Dawson
20

Chrome 48 vous pouvez déboguer les styles d'impression dans l' onglet Rendu .

Cliquez sur l'icône de menu en haut à droite de l'inspecteur et paramètres de rendu .

Modifier
pour Chrome 58 l'emplacement a changé pour Inspecteur Web> Menu> Plus d'outils> Rendu

minlare
la source
4
Chrome 49: F12 (console développeur) -> ESC (console) -> Rendu -> Émulation de supports d'impression
user1477388
19

Dans Chrome v41, il est là, mais à un endroit légèrement différent.

entrez la description de l'image ici

johntrepreneur
la source
3
Dans v53, il se trouve à la place dans l'onglet Rendu, en bas, il y a une case à cocher pour émuler le média qui activera une liste déroulante que vous pouvez sélectionner Imprimer, similaire à la capture d'écran fournie
James Gray
16

Il existe un moyen facile de déboguer votre feuille de style d'impression sans changer aucun attribut de support dans votre code HTML (bien sûr, comme indiqué, cela ne résout pas le problème largeur / pages):

  • Utilisez l'extension Firefox + Web Developer.
  • Dans le menu Développeur Web, choisissez CSS / Afficher CSS par type de support / Imprimer
  • Revenez au menu Web Developer, choisissez Options / Persist Features

Vous visualisez maintenant le CSS imprimé et vous pouvez recharger votre page indéfiniment. Une fois que vous avez terminé, décochez «Persister les fonctionnalités» et rechargez, vous obtiendrez à nouveau le CSS de l'écran.

HTH.

Capsule
la source
7
rend différent de l'aperçu avant impression, sensiblement. c'est peut-être une bizarrerie dans mon CSS. en tout cas, cela ne résout pas le problème. Merci quand même.
heartpunk
Ouais, complètement différent pour moi aussi. J'ai suivi ce jsfiddle ( jsfiddle.net/2wk6Q/3 ) et l'aperçu avant impression montre des pages avec des marges rouges, mais c'est tout à fait différent.
duality_
1
Je dois dire que cette "solution de contournement" fonctionne le mieux pour moi. J'ai peut-être de la chance et c'est pourquoi il n'y a que de petites différences entre l'écran d'impression natif et l'écran d'impression des développeurs Web, mais cela m'a certainement aidé à comprendre pourquoi les lacunes apparaissent et ce qui est le plus important - je peux parcourir le code avec Firebug et voir ce qui se passe le
Erik Čerpnjak
13

L'interface utilisateur de Chrome est à nouveau différente à partir de la v53.

Je n'ai pas besoin d'utiliser cette fonctionnalité souvent, mais chaque fois que je le fais, il me faut une éternité pour savoir où l'équipe Chrome l'a déplacée depuis la dernière fois que j'ai gravé des cycles en essayant de la retrouver.

Notez que c'est le menu ... du volet Outils de développement et non le menu ... du volet du navigateur Chrome.

Aperçu de l'imprimante à partir de la v53 sur MacOS

Faites maintenant défiler vers le bas dans la section Rendu. C'est souvent en dessous du pli.

TrophyGeek
la source
1
Vous venez de me sauver des jours de débogage print.css. Tu es incroyable!
zazvorniki
8

Suite à la réponse de rflnogueira, les paramètres actuels de Chrome (40.0. *) Ressembleront à ci-dessous:

émulation css impression chrome

Anil Vangari
la source
Il m'a fallu un peu de temps pour identifier l'onglet "Médias". J'ai continué à le chercher dans l'onglet "Appareil".
Lorin Rivers
5

Affichez simplement la feuille de style d'impression dans votre navigateur en utilisant media="screen"pendant le débogage. La vue d'aperçu avant impression utilise le même moteur de rendu que le mode de navigation normal afin que vous puissiez obtenir des résultats précis en utilisant cela.

Tatu Ulmanen
la source
14
Sauf que le mode de navigation normal n'a pas de pages, donc je n'ai aucune idée de la façon dont le contenu se déroulera. Le mode de navigation normal a une largeur d'un certain nombre de pixels, tandis qu'une page a une largeur d'un certain nombre de pouces ou de centimètres. Il existe des différences fondamentales, indépendantes de l'implémentation, entre l'écran et l'impression. Le débogage entre ceux-ci est ce que je recherche.
Jim Puls
1
Sur Chrome, le rendu est assez différent en utilisant cette suggestion seule. Ne fonctionnera pas.
heartpunk
La largeur de la «page» n'est pas difficile à fixer, c'est la hauteur qui est vraiment difficile. Les navigateurs et les imprimantes joueront tous deux un rôle dans le mal de tête 11 pouces. Les pages Web sont de longueur continue. Sans garantie du type de périphérique de sortie et du navigateur, je ne pense pas que vous le frapperez à chaque fois. L'utilisation d'une approche HTML vers PDF fonctionnerait, mais cela dépasse la portée de votre question.
Dawson
3

2019 - Instructions mises à jour

  1. Ouvrez l'inspecteur Chrome
    • Depuis Mac => option+ command+i
    • Depuis Windows =>F12
  2. Cliquez sur les 3 petits points, customize and control devTools entrez la description de l'image ici

  3. Sélectionner More Tools

  4. Sélectionner Rendering

  5. Faites défiler vers le bas pour Emulate CSS Media

  6. Sélectionnez printdans la flèche vers le bas

entrez la description de l'image ici

jso1919
la source
0

Si vous avez une fonction d'impression qui réécrit le contenu de la page dans une nouvelle fenêtre avec votre feuille de style d'impression référencée, vous aurez une bien meilleure idée de ce à quoi elle ressemblera sur le papier, et vous pourrez la déboguer avec les goûts de Firebug aussi.

Voici un exemple de la façon dont cela peut être fait avec 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();
        });
Blowsie
la source
2
Le problème avec cette approche est que si un utilisateur sélectionne simplement "Imprimer ..." dans son navigateur, cette fonction javascript ne sera jamais invoquée.
Ken Liu
vous n'avez pas besoin d'afficher la fonction d'impression à l'utilisateur, vous pouvez simplement l'utiliser à des fins de débogage si vous le souhaitez
Blowsie
Il s'agit d'une solution trop technique à quelque chose que le navigateur fait déjà. Utilisez simplement un media="print"et media="screen"respectivement pour vos feuilles de style et utilisez simplement le menu du navigateur ou des combinaisons de touches pour appeler l'aperçu avant impression. (Dans ce cas, ce n'est pas différent que d'ouvrir une fenêtre contextuelle) Et si vous déboguez simplement, appliquez l' media="screen"attribut à vos styles d'impression jusqu'à ce que vous ayez terminé le débogage.
ORyan
-1

entrez la description de l'image ici

En DreamWeaver il y a une barre d' outils qui montre pratiquement toutes les options de rendu que vous voulez: l' écran, l' impression, les médias de poche, écran de projection, supports de télévision, des feuilles de style de temps desitn, etc. C'est ce que je l' utilise surtout parce qu'il: montre instantanément un aperçu avec 1 simple pression sur un bouton.

Sam
la source
1
bon à savoir, mais cela nécessiterait d'utiliser un moteur de rendu différent de celui pour lequel nous développons, et nécessite toujours plus qu'un rechargement. Merci quand même.
heartpunk
1
Déjà en 2011, il s'agissait d'un logiciel exclusif à l'achat uniquement sur des plateformes limitées, que vous deviez payer pour obtenir la fonctionnalité demandée pour déboguer le Web ouvert.
Volker E.
-7

J'utilise des macros pour envoyer des pressions de touches et des clics de souris à plusieurs reprises. Sous Windows, AutoHotKey est un excellent logiciel et sous OS X, vous pouvez lire sur le type Automator d' une alternative AHK pour OsX .

Sous Windows (remplacer Ctrl par Cmd sous OS X) "Ctrl-s / passer à la fenêtre Fx où qu'il se trouve dans la liste des fenêtres ouvertes / Ctrl-r" lié à 1 clé inutilisée évite la frustration de tâches inintéressantes et me sauvera finalement les bras de RSI :)

FelipeAls
la source