Як ви налагоджуєте 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.