Як ви налагоджуєте CSS для друку?


74

Я постійно використовую Firebug та IE Developer Toolbar для налагодження хитрих проблем CSS. Але іноді з’являється хитра помилка, яка з’являється лише тоді, коли ви надрукуєте сторінку.

Які методи / інструменти ви використовуєте для діагностики подібних проблем? Чи є спосіб більше використовувати традиційні засоби налагодження CSS у режимі друку?

Оновлено: я вже використовую PDF-принтер, щоб уникнути марнотратства паперу; моя проблема полягає в тому, що я не можу клацнути правою кнопкою миші на надрукованому DOM. Деякі інші відповіді нижче дуже корисні, дякую. :-)


2
Краща відповідь тут: stackoverflow.com/questions/2452713/…
Mark E. Haase

Відповіді:


51

У Chrome 51:

Інструменти розробника Chrome

Відкрийте devtools ( CTRL + F12або CTRL + SHIFT + I) і клацніть на ...меню, клацніть, More Tools > Rendering settingsщоб відкрити Renderingвкладку консолі розробника (або, якщо консоль відкрита, просто перейдіть до цієї вкладки).

На цій вкладці встановіть і встановіть прапорець Emulate Media: print.


Обережно: це не буде імітувати такі речі, як приховування фонових зображень / кольорів (що робить відповідь Firefox).
Gavin S. Yancey

Чи існує емулятор друку в IE?
Менна Рамадан

83

Щойно знайшов коментар lee-penkman про нову функцію у Firefox тут : натисніть Shift-F2у Firefox, щоб відкрити консоль браузера (не консоль javascript), а потім введіть media emulate print. Працює абсолютно чудово!


Оновлення вересня 2018 року : починаючи з Firefox 62, консоль розробника зникла. Здається, зараз не існує способу активувати емуляцію стилю друку.


Оновлення, листопад 2019 р . : Здається, що у Firefox 69 знову є нова кнопка для емуляції стилю друку. Дивіться іншу відповідь на цій сторінці: https://stackoverflow.com/a/58015662/195476


6
Це чудово спрацювало для мене, коли я звернув увагу на те, що ти насправді сказав робити, а не на припущення, що я знаю. Цього немає в консолі інструментів F12, це панель інструментів розробника. Саме те, що я шукав.
Steve Hiner

Це чудова особливість, яка б вирішила багато проблем, які були у мене в минулому ... +1
Ерік Черпняк,

8
На жаль, ця функція не працює на 100% так, як справжня функція друку. ЦЕ є з media emulate printвключеною опцією, в той час як ЦЕ фактичний попередній перегляд друку Firefox.
Лука Регацці

1
На Mac:fn+shift+F2
Натан Артур

4
Панель інструментів розробника була видалена з Firefox 62: developer.mozilla.org/en-US/docs/Tools/GCLI . Дивіться stackoverflow.com/questions/47877112/…
Натан,

23

Я використовую плагін WebDeveloper та CSS -> Відобразити CSS за типом носія -> Друк, щоб переглянути CSS так, як це було б під час друку. Службові програми Firebug для перевірки працюють з CSS у відфільтрованому плагіном.


20
На жаль, цей вигляд навіть віддалено не схожий на те, що насправді друкує Firefox (схоже, під час друку використовуються також лише екранні стилі). Я не знайшов кращого варіанту, ніж часте використання параметра попереднього перегляду під час редагування стилів у Firebug.
Tgr

1
Дійсно, я думаю, це тому, що поняття сторінок не існує ... але, принаймні, ви можете поглянути на нього, не маючи попереднього перегляду.
gamov

3
Здається, використовується ТІЛЬКИ стилі друку. Приємним фокусом є не лише встановити конкретні типи носіїв, а й встановити для всіх інших таблиць стилів media = "all, print". Працює для мене :-)
Jeroen

6

Я використовую Firefox та панель інструментів розробника .

Я використовую інструмент редагування css в реальному часі на панелі завдань, дуже корисно змінювати ваш css на льоту, щоб бачити результати в режимі реального часу.

Я також використовую контурну функцію, яку div та подібні речі наводить на наведений курсор на вашому веб-сайті. Дуже корисно знайти div.

Що стосується проблеми друку, перейдіть до CSS -> Відобразити стиль CSS за носієм -> друк

У ньому є багато інших інструментів, я, мабуть, використовую близько 10% від нього.

Спробуйте, можливо, ви знайдете щось корисне.


5

У Firefox 69 я знайшов кнопку для імітації друкованих носіїв. Просто відкрийте Інструменти розробника (F12) і натисніть Інспектор. Кнопка перемикання - це крайній лівий значок, який знаходиться у виділеному розділі на знімку екрана нижче, той, що схожий на аркуш паперу.

введіть тут опис зображення


Це слід розглядати як відповідь на FireFox.
keepAlive

Так, майже пропустив ту маленьку синю піктограму аркуша паперу, дякую
IliasT

клацніть, але нічого не сталося
Андрій Коваленко

@Andrii Не могли б ви розказати?
mzuther

4

У інструментах розробника chrome (F12 \ Ctrl (cmd на mac) + Shift + C): На вкладці емуляції (від Chrome 32 і далі IMHO) є вкладка "Медіа".

Там ви можете встановити прапорець емуляції мультимедіа та вибрати медіа, який ви хочете емулювати ('друк', 'екран' тощо)


3

Як щодо того, щоб просто вказати останній CSS для друку та видалити умову «print» із вашого посилання CSS або імпорту? Потім ви налагоджуєте друкований CSS у вікні браузера.


3
просто потрібно переконатися, що ви встановили#body { width: 8.5in; height:11in;}
ZMorek

Блискуча ідея! Це було надзвичайно ефективно для мене
veeTrain

Не працював у мене у Firefox v22. Виглядав дуже інакше, ніж фактичний принт.
reflexiv

Працював у FF37. Тег посилання для друку є останнім у списку тегів посилань css. Переключено атрибут медіа в цьому тегу посилання з "друк" на "екран". Залишив усі інші теги посилань як є.
Rich C

1

Я використовую віртуальний принтер Adobe PDF, оскільки це найближче до справжнього принтера, яке ви отримаєте, не витрачаючи чорнила та паперу.

У будь-якому випадку, рекомендується мати окремий CSS для відбитків, з набагато простішою графікою та меншою кількістю зображень, які ви використовуєте лише для дизайнерських цілей.


Так, це окремий CSS, який я намагаюся налагодити. (PDF-принтер - хороша порада; я цим користуюсь багато.)
Ден Фабуліч

1

Я завжди користувався панеллю інструментів веб-розробника (як описано в інших відповідях), але, здається, Firebug час від часу пропускає деякі стилі. Тож я додав Закладку до свого браузера та додав наступний Javascript як URL-адресу закладки. Тепер я можу просто переключитися на стиль друку, клацнувши закладку:

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());}}})()

Наведений вище код знаходить усі посилання на таблицю стилів, перевіряє, чи це media = print, і якщо так, то змінює його на media = all (і приховує весь media = екран, замінюючи його на media = dontshow) і перезавантажує таблиці стилів, додаючи маркер часу до URL. Основний сценарій перезавантаження - хтось інший, я додав медіа-частину. Для мене це чудово працює!

Це може бути більш читабельна версія URL-адреси JavaScript вище для пояснення:

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());
        }
    }
})()

0

Якщо ви не хочете платити гроші, надрукуйте на Microsoft XPS Document Writer. Або скористайтеся SnagIt, якщо у вас є кошти (безкоштовна пробна версія на сайті).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.