Sugestie dotyczące debugowania arkuszy stylów drukowania?


238

Niedawno pracowałem nad arkuszem stylów drukowania dla strony internetowej i zdałem sobie sprawę, że brakuje mi skutecznych sposobów na jego ulepszenie. Cykl ponownego ładowania do pracy z układem ekranowym to jedna rzecz:

  • zmień kod
  • karta poleceń
  • przeładować

ale cały proces staje się znacznie bardziej uciążliwy, gdy próbujesz drukować:

  • zmień kod
  • karta poleceń
  • przeładować
  • wydrukować
  • zez na obrazie podglądu wydruku
  • otwórz PDF w podglądzie w celu dalszej kontroli

Czy brakuje mi tutaj narzędzi? Czy inspektor WebKit ma pole wyboru „Udawaj, że to media stronicowane”? Czy jest jakaś magia, którą potrafi Firebug ( wzdrygnąć )?


4
Co powiesz na funkcję „Podgląd wydruku” przeglądarki, która ją obsługuje (np. Firefox)? Debiutowałem (głównie dokładnie) na niektórych stronach internetowych, aby je wydrukować.
Halil Özgür


3
W przeglądarce Firefox otwórz „Pasek narzędzi programisty” za pomocą Shift + F2, wpisz „media emulate print” (lub „emu” + Tab + „print”), Enter.
Marcello Nuccio,


@MarcelloNuccio To powinna być odpowiedź. stackoverflow.com/a/28873496/1696030 uzyskał całkiem pozytywne głosy do porównania. „Pasek narzędzi programisty” jest nieco mylący, ponieważ jest interfejsem wiersza poleceń.
Volker E.,

Odpowiedzi:


327

Jest to możliwe w inspektorze Chrome.

  1. Otwórz Inspektora DevTools (Mac: Cmd+ Shift+ C, Windows: Ctrl+ Shift+ C)
  2. Kliknij ikonę Przełącz tryb urządzeniaPrzełącz przycisk trybu urządzenia , znajdującą się w lewym górnym rogu panelu DevTools. (Windows: Ctrl+ Shift+ M, mac: Cmd+ Shift+ M).
  3. Kliknij ikonę Więcej przesłonięć więcej przesłonięć w prawym górnym rogu okna przeglądarki, aby otworzyć szufladę devtools.
  4. Następnie wybierz Media w szufladzie emulacji i zaznacz pole wyboru Media CSS .

    wprowadź opis zdjęcia tutaj

To powinno załatwić sprawę.

Aktualizacja: Menu uległy zmianie w DevTools. Można go teraz znaleźć, klikając menu „trzy kropki” w prawym górnym rogu> Więcej narzędzi> Ustawienia renderowania> Emuluj media> drukuj.

Źródło: strona Google DevTools *


5
Dzięki, właśnie tego szukałem, nie mogłem tego znaleźć: / Skrót już nie działa. Po prostu robię ikonę koła zębatego F12 + w prawym dolnym rogu, a następnie ustawienie znajduje się na karcie Zastąpienia,
Aurelien

18
niestety nie jest w 100% dokładne :(
maazza,

9
W Chrome 32.0.1700.14 beta-m Aurabrakuje „Emuluj media CSS [drukuj]” :(
Rocket Hazmat

11
Ta odpowiedź musi zostać poprawiona. W Chrome 48 emulator arkusza stylów wydruku nie jest już objęty „Emulacją”, ale „Rendering”.
chharvey

13
Menu z trzema kropkami (prawa strona) w inspektorze> Więcej narzędzi> Ustawienia renderowania> Emuluj media> drukuj
allicarn

74

Zakładam, że chcesz mieć jak największą kontrolę nad drukowanym oknem bez korzystania z HTML do PDF ... Użyj ekranu @media do debugowania - @media print do końcowego css

Nowoczesne przeglądarki można uzyskać szybkie wizualne, co wydarzy się w czasie drukowania za pomocą cali i pkt w krótkim czasie @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 */
 ...
}

Gdy przeglądarka wyświetli „cale”, będziesz mieć lepszy pomysł na to, czego się spodziewać. To podejście powinno prawie zakończyć metodę podglądu wydruku. Wszystkie drukarki będą współpracować z jednostkami pti in, a użycie techniki @media pozwoli Ci szybko zobaczyć, co się stanie, i odpowiednio je dostosować. Firebug (lub odpowiednik) absolutnie przyspieszy ten proces. Po dodaniu zmian do @media masz cały kod potrzebny do powiązanego pliku CSS za pomocą media = "print"atrybutu - wystarczy skopiować / wkleić reguły ekranu @media do pliku, do którego się odwołuje.

Powodzenia. Sieć nie została stworzona do druku. Stworzenie rozwiązania, które dostarcza całą twoją treść, style równe temu, co widać w przeglądarce, może być czasami niemożliwe. Na przykład płynny układ dla głównie 1280 x 1024 odbiorców nie zawsze łatwo przekłada się na ładny i schludny druk laserowy 8,5 x 11.

Referencje W3C dotyczące purusalu: http://www.w3.org/TR/css3-mediaqueries/


Chciałem tylko skomentować, że ta metoda jest dość sprytna. Znacznie łatwiej jest nieznacznie zmienić rozmiar okna, aby „przełączyć” style wydruku, niż skorzystać z funkcji podglądu wydruku. Mimo że czasem trzeba to robić w celu zapewnienia zgodności z IE, jest to świetne rozwiązanie do początkowej iteracji stylów drukowania.
chucknelson

@Głaskanie pod brodę. Dzięki. Hej, zdałem sobie sprawę, że moje demo jest offline, więc stworzyłem dla niego skrzypce. jsfiddle.net/dNEmT
Dawson

20

Chrome 48 możesz debugować style drukowania na karcie Rendering .

Kliknij ikonę menu w prawym górnym rogu Inspektora i Ustawienia renderowania .

Edytuj
dla Chrome 58 lokalizacja zmieniła się na Inspektora sieci> Menu> Więcej narzędzi> Renderowanie


4
Chrome 49: F12 (konsola programisty) -> ESC (konsola) -> Rendering -> Emuluj media drukowane
1477388

19

W Chrome v41 jest tam, ale w nieco innym miejscu.

wprowadź opis zdjęcia tutaj


3
W wersji v53 znajduje się ona na karcie Rendering, u dołu znajduje się pole wyboru Emuluj media, które umożliwi rozwijanie menu, w którym możesz wybrać opcję Drukuj, podobnie jak na dostarczonym zrzucie ekranu
James Gray

16

Istnieje prosty sposób debugowania arkusza stylów drukowania bez przełączania żadnego atrybutu media w kodzie HTML (oczywiście, jak wskazano, nie rozwiązuje to problemu z szerokością / stronami):

  • Użyj rozszerzenia Firefox + Web Developer.
  • W menu Web Developer wybierz CSS / Wyświetl CSS według typu nośnika / Drukuj
  • Wróć do menu Web Developer, wybierz Opcje / Zachowaj funkcje

Teraz przeglądasz drukowany CSS i możesz przeładować swoją stronę w nieskończoność. Gdy skończysz, odznacz „Zachowaj funkcje” i załaduj ponownie, otrzymasz ponownie ekran CSS.

HTH.


7
znacznie różni się od podglądu wydruku. może to dziwactwo w moim css. w każdym razie nie rozwiązuje problemu. w każdym razie dzięki.
heartpunk

Tak, dla mnie też zupełnie inaczej. Podążyłem za tym jsfiddle ( jsfiddle.net/2wk6Q/3 ) i podgląd wydruku pokazuje strony z czerwonymi marginesami, ale to jest zupełnie inne.
duality_

1
Muszę powiedzieć, że to „obejście” działa najlepiej dla mnie. Może mam szczęście i dlatego istnieją tylko niewielkie różnice między natywnym ekranem drukowania a ekranem drukowania twórców stron internetowych, ale to zdecydowanie pomogło mi dowiedzieć się, dlaczego pojawiają się luki i co najważniejsze - mogę przejść przez kod z firebugiem i zobaczyć, co się dzieje on
Erik Čerpnjak,

13

Chrome UI różni się znowu jak w V53.

Nie muszę często używać tej funkcji, ale zawsze, gdy to robię, zajęło mi wieczność ustalenie, gdzie zespół Chrome przeniósł ją od czasu ostatniego spalania cykli, próbując ją wyśledzić.

Zauważ, że jest to ... menu w panelu Narzędzia deweloperskie, a nie ... menu w panelu Przeglądarka Chrome.

Podgląd drukarki od wersji v53 w systemie MacOS

Teraz przewiń w dół w sekcji Rendering. Często jest poniżej zakładki.


1
Właśnie zaoszczędziłeś mi dni debugowania print.css. Jesteś niesamowity!
zazvorniki

8

Zgodnie z odpowiedzią rflnogueira bieżące ustawienia Chrome (40.0. *) Będą wyglądać następująco:

emulacja wydruku css w chrome


Identyfikowanie karty „Media” zajęło mi trochę czasu. Szukałem go w zakładce „Urządzenie”.
Lorin Rivers,

5

Wystarczy pokazać arkusz stylów drukowania w przeglądarce, używając media="screen"podczas debugowania. Widok podglądu wydruku korzysta z tego samego mechanizmu renderowania, co normalny tryb przeglądania, dzięki czemu można uzyskać dokładne wyniki za jego pomocą.


14
Tyle że normalny tryb przeglądania nie ma stron, więc nie mam pojęcia, jak przepłynie treść. Normalny tryb przeglądania ma szerokość określonej liczby pikseli, podczas gdy strona ma szerokość określonej liczby cali lub centymetrów. Istnieją podstawowe, niezależne od implementacji różnice między ekranem a drukiem. Debugowanie między nimi jest tym, czego szukam.
Jim Puls

1
W przypadku Chrome rendering jest zupełnie inny przy użyciu samej tej sugestii. Nie zadziała
heartpunk

Szerokość „strony” nie jest trudna do przybicia, to wysokość jest naprawdę trudna. Zarówno przeglądarki, jak i drukarki będą odgrywać rolę w bólu głowy 11 cali. Strony internetowe mają ciągłą długość. Bez gwarancji typu urządzenia wyjściowego i przeglądarki nie sądzę, abyś za każdym razem trafiał w sedno. Korzystanie z metody HTML na PDF działałoby, ale to nie wchodzi w zakres twojego pytania.
Dawson

3

2019 - Zaktualizowane instrukcje

  1. Otwórz inspektora Chrome
    • Z komputera Mac => option+ command+i
    • Z systemu Windows =>F12
  2. Kliknij małe 3 kropki, customize and control devTools wprowadź opis zdjęcia tutaj

  3. Wybierz More Tools

  4. Wybierz Rendering

  5. Przewiń w dół do Emulate CSS Media

  6. Wybierz printze strzałki w dół

wprowadź opis zdjęcia tutaj


0

Jeśli masz funkcję drukowania, która przepisuje zawartość strony do nowego okna z odniesieniem do arkusza stylów wydruku, uzyskasz o wiele lepsze wyobrażenie o tym, jak będzie wyglądać na papierze, i będziesz mógł ją debugować z takimi jak firebug.

Oto przykład tego, jak można to zrobić za pomocą 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
Problem z tym podejściem polega na tym, że jeśli użytkownik po prostu wybierze opcję „Drukuj ...” w przeglądarce, ta funkcja javascript nigdy nie zostanie wywołana.
Ken Liu,

nie musisz wyświetlać funkcji drukowania użytkownikowi, możesz po prostu użyć jej do celów debugowania, jeśli chcesz
Blowsie

Jest to zbyt zaawansowane rozwiązanie czegoś, co przeglądarka już robi. Wystarczy użyć a media="print"i media="screen"odpowiednio do swoich arkuszy stylów i po prostu użyj menu przeglądarki lub kombinacji klawiszy, aby wywołać podgląd wydruku. (W tym przypadku nie różni się to od otwierania wyskakującego okienka). Jeśli debugujesz tylko, zastosuj media="screen"atrybut do swoich stylów drukowania, aż zakończysz debugowanie.
ORyan

-1

wprowadź opis zdjęcia tutaj

W DreamWeaver znajduje się pasek narzędzi, który pokazuje praktycznie każdą opcję renderowania, którą chcesz: ekran, druk, media podręczne, ekran projekcyjny, media telewizyjne, arkusze stylów czasu itp. Tego właśnie używam, ponieważ: natychmiast pokazuje podgląd za pomocą 1 pojedyncze naciśnięcie przycisku.


1
dobrze wiedzieć, ale wymagałoby to użycia innego silnika renderowania niż ten, dla którego opracowujemy, i nadal wymaga więcej niż przeładowania. w każdym razie dzięki.
heartpunk

1
Już w 2011 roku było to oprogramowanie zastrzeżone, tylko do zakupu, tylko na ograniczonych platformach, za które trzeba było zapłacić, aby uzyskać żądaną funkcjonalność do debugowania otwartej sieci.
Volker E.,

-7

Używam makr, aby wielokrotnie wysyłać naciśnięcia klawiszy i myszy. W systemie Windows AutoHotKey jest świetnym oprogramowaniem, a pod OS X możesz przeczytać o Automatorze jako alternatywnym AHK dla OsX .

Pod Windows (zamień Ctrl na Cmd w OS X) „Ctrl-s / przełącz się do okna Fx gdziekolwiek jest na liście otwartych okien / Ctrl-r” przypisany do 1 nieużywanego klucza pozwala uniknąć frustracji związanej z nieciekawymi zadaniami i ostatecznie uratuje moje ramiona od RSI :)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.