Цвет фона не отображается в предварительном просмотре
Я пытаюсь распечатать страницу. На этой странице я дал таблице цвет фона.
Когда я просматриваю предварительный просмотр печати в хроме, он не берет свойство цвета фона...
Итак, я попробовал это свойство:
-webkit-print-color-adjust: exact;
но при этом не отображается цвет.
http://jsfiddle.net/TbrtD/
.vendorListHeading {
background-color: #1a4567;
color: white;
-webkit-print-color-adjust: exact;
}
<div class="bs-docs-example" id="soTable" style="padding-top: 10px;">
<table class="table" style="margin-bottom: 0px;">
<thead>
<tr class="vendorListHeading" style="">
<th>Date</th>
<th>PO Number</th>
<th>Term</th>
<th>Tax</th>
<th>Quote Number</th>
<th>Status</th>
<th>Account Mgr</th>
<th>Shipping Method</th>
<th>Shipping Account</th>
<th style="width: 184px;">QA</th>
<th id="referenceSO">Reference</th>
<th id="referenceSO" style="width: 146px;">End-User Name</th>
<th id="referenceSO" style="width: 118px;">End-User PO</th>
<th id="referenceSO" style="width: 148px;">Tracking Number</th>
</tr>
</thead>
<tbody>
<tr class="">
<td>22</td>
<td>20130000</td>
<td>Jim B.</td>
<td>22</td>
<td>510 xxx yyyy</td>
<td>[email protected]</td>
<td>PDF</td>
<td>12/23/2012</td>
<td>Approved</td>
<td>PDF</td>
<td id="referenceSO">12/23/2012</td>
<td id="referenceSO">Approved</td>
</tr>
</tbody>
</table>
</div>
Ответы
Ответ 1
CSS-свойство Chrome -webkit-print-color-adjust: exact;
работает правильно.
Однако убедиться, что у вас есть правильный CSS для печати, часто бывает сложно. Чтобы избежать трудностей, которые вы испытываете, можно сделать несколько вещей. Во-первых, отделите весь ваш CSS для печати от вашего CSS для экрана. Это делается через @media screen
@media print
и @media screen
.
Часто просто установить дополнительный CSS- @media print
недостаточно, потому что при печати у вас все еще есть все остальные CSS-коды. В этих случаях вам просто нужно знать о специфике CSS, поскольку правила печати автоматически не выигрывают у правил CSS без печати.
В вашем случае -webkit-print-color-adjust: exact
работает. Тем не менее, ваш background-color
и определения цвета выбиваются другим CSS с более высокой специфичностью.
Хотя я не одобряю использование !important
почти в любых обстоятельствах, следующие определения работают должным образом и выявляют проблему:
@media print {
tr.vendorListHeading {
background-color: #1a4567 !important;
-webkit-print-color-adjust: exact;
}
}
@media print {
.vendorListHeading th {
color: white !important;
}
}
Вот скрипка (и встроенная для удобства предварительного просмотра печати).
Ответ 2
Это свойство CSS - все, что вам нужно, это работает для меня... При предварительном просмотре в Chrome у вас есть возможность увидеть его BW и цвет (цвет: параметры - цвет или черно-белый), поэтому, если у вас нет этого, то я предлагаю захватить это расширение Chrome и сделать вашу жизнь проще:
https://chrome.google.com/webstore/detail/print-background-colors/gjecpgdgnlanljjdacjdeadjkocnnamk?hl=en
Сайт, который вы добавили на скрипке, нуждается в этом в медиа-печати css (вам просто нужно добавить его...
media print CSS в теле:
@media print {
body {-webkit-print-color-adjust: exact;}
}
UPDATE
ОК, так что ваша проблема - bootstrap.css... у него есть css для печати на принтере, как и вы... вы удаляете это, и это должно дать вам цвет... вам нужно либо сделать свое, либо использовать загрузочные файлы print css.
Когда я нажимаю на печать, я вижу цвет....
http://jsfiddle.net/rajkumart08/TbrtD/1/embedded/result/
Ответ 3
Мне просто нужно было добавить атрибут !important
в тег background-color, чтобы он отображался, не нуждался в части webkit:
background-color: #f5f5f5 !important;
Ответ 4
Chrome не будет отображать фоновый цвет или некоторые другие стили при печати, если параметр фоновой графики отключен.
Это не имеет ничего общего с CSS, @media или спецификой. Возможно, вы можете обойти это, но самый простой способ получить хром, чтобы показать цвет фона и другую графику, это правильно установить этот флажок в разделе "Дополнительные параметры".
![enter image description here]()
Ответ 5
Если вы используете загрузчик или любой другой сторонний CSS, убедитесь, что вы указали только экран мультимедиа, поэтому вы можете управлять типом печатного носителя в своих собственных файлах CSS:
<link rel="stylesheet" media="screen" href="">
Ответ 6
Используйте следующее в вашей @media print
стилей @media print
.
h1 {
background-color:#404040;
background-image:url("img/404040.png");
background-repeat:repeat;
box-shadow: inset 0 0 0 1000px #404040;
border:30px solid #404040;
height:0;
width:100%;
color:#FFFFFF !important;
margin:0 -20px;
line-height:0px;
}
Вот пара вещей, на которые стоит обратить внимание:
- background-color - абсолютный запасной вариант и в основном для потомков.
- background-image использует пиксель размером 1px x 1px размером # 404040, преобразованный в PNG. Если у пользователя включены изображения, он может работать, если нет...
- Установите коробку-тень, если это не сработает...
- Граница = 1/2 желаемой высоты и/или ширины коробки, сплошная, цветная. В приведенном выше примере я хотел коробку высотой 60px.
- Обнулить высоту/ширину в зависимости от того, что вы контролируете в атрибуте border.
- Цвет шрифта по умолчанию будет черным, если вы не используете! Важный
- Установите высоту строки равной 0, чтобы зафиксировать для поля, не имеющего физического размера.
- Создайте и разместите свои собственные PNG :-)
- Если текст в блоке нужно обернуть, поместите его в div и поместите div с помощью position :lative; и удалите высоту строки.
Смотрите мою скрипку для более подробной демонстрации.
Ответ 7
Ваш CSS должен выглядеть следующим образом:
@media print {
body {
-webkit-print-color-adjust: exact;
}
}
.vendorListHeading th {
background-color: #1a4567 !important;
color: white !important;
}
Ответ 8
Для тех, кто использует BOOTSTRAP.CSS, это исправление!
Я перепробовал все решения, и они не работали... пока я не обнаружил, что у bootstrap.css был супер раздражающий @media print
который сбрасывает все ваши цвета, цвета фона, тени и т.д....
@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}
Так что или удалите этот раздел из bootstrap.css (или bootstrap.min.css)
Или переопределите эти значения в CSS страницы, которую вы хотите распечатать, на своем собственном @media print
@media print {
body {
-webkit-print-color-adjust: exact;
}
.customClass{
//customCss + !important;
}
//more of your custom css
}
Ответ 9
Вы уверены, что это проблема css? В этой статье есть несколько сообщений в google:
http://productforums.google.com/forum/#!category-topic/chrome/discuss-chrome/eMlLBcKqd2s
Это может быть связано с процессом печати. На сафари, который также является webkit, есть флажок для печати фоновых изображений и цветов в диалоговом окне принтера.
Ответ 10
Я использовал ответ purgatory101, но не смог сохранить все цвета (значки, фоны, цвета текста и т.д.), Особенно из-за того, что таблицы стилей CSS нельзя использовать с библиотеками, которые динамически меняют цвета элементов DOM. Поэтому вот скрипт, который изменяет стили элемента (background-colour
и colour
) перед печатью и очищает стили после завершения печати. Полезно избегать написания большого количества CSS в таблице стилей @media print
как она работает независимо от структуры страницы.
Есть часть скрипта, специально созданная для сохранения цвета значков FontAwesome (или любого элемента, который использует селектор :before
для вставки цветного содержимого).
JSFiddle, показывающий скрипт в действии
Совместимость: работает в Chrome, я не тестировал другие браузеры.
function setColors(selector) {
var elements = $(selector);
for (var i = 0; i < elements.length; i++) {
var eltBackground = $(elements[i]).css('background-color');
var eltColor = $(elements[i]).css('color');
var elementStyle = elements[i].style;
if (eltBackground) {
elementStyle.oldBackgroundColor = {
value: elementStyle.backgroundColor,
importance: elementStyle.getPropertyPriority('background-color'),
};
elementStyle.setProperty('background-color', eltBackground, 'important');
}
if (eltColor) {
elementStyle.oldColor = {
value: elementStyle.color,
importance: elementStyle.getPropertyPriority('color'),
};
elementStyle.setProperty('color', eltColor, 'important');
}
}
}
function resetColors(selector) {
var elements = $(selector);
for (var i = 0; i < elements.length; i++) {
var elementStyle = elements[i].style;
if (elementStyle.oldBackgroundColor) {
elementStyle.setProperty('background-color', elementStyle.oldBackgroundColor.value, elementStyle.oldBackgroundColor.importance);
delete elementStyle.oldBackgroundColor;
} else {
elementStyle.setProperty('background-color', '', '');
}
if (elementStyle.oldColor) {
elementStyle.setProperty('color', elementStyle.oldColor.value, elementStyle.oldColor.importance);
delete elementStyle.oldColor;
} else {
elementStyle.setProperty('color', '', '');
}
}
}
function setIconColors(icons) {
var css = '';
$(icons).each(function (k, elt) {
var selector = $(elt)
.parents()
.map(function () { return this.tagName; })
.get()
.reverse()
.concat([this.nodeName])
.join('>');
var id = $(elt).attr('id');
if (id) {
selector += '#' + id;
}
var classNames = $(elt).attr('class');
if (classNames) {
selector += '.' + $.trim(classNames).replace(/\s/gi, '.');
}
css += selector + ':before { color: ' + $(elt).css('color') + ' !important; }';
});
$('head').append('<style id="print-icons-style">' + css + '</style>');
}
function resetIconColors() {
$('#print-icons-style').remove();
}
А затем измените функцию window.print
чтобы она устанавливала стили перед печатью и сбрасывала их после.
window._originalPrint = window.print;
window.print = function() {
setColors('body *');
setIconColors('body .fa');
window._originalPrint();
setTimeout(function () {
resetColors('body *');
resetIconColors();
}, 100);
}
Часть, которая находит пути значков для создания CSS: элементы before перед копией этого SO ответа
Ответ 11
В стилях bootstrap css под заголовком @media print {*,: after,: before....} существует стиль, который имеет цветные и фоновые стили, отмеченные! important, которые удаляют любые цвета фона для любых элементов. Убейте эти две части css, и это сработает.
Bootstrap принимает решение о том, что вы должны никогда иметь цвет фона в печатных изданиях, поэтому вам нужно отредактировать их css или иметь другой важный стиль, который является более высоким приоритетом. Хорошая загрузочная загрузка...
Ответ 12
Вы также можете использовать свойство box-shadow
.
Ответ 13
Если вы используете Bootstrap. Просто используйте этот код в своем файле CSS. Bootstrap удаляет все ваши цвета в предварительном просмотре.
@media print{
.box-text {
font-size: 27px !important;
color: blue !important;
-webkit-print-color-adjust: exact !important;
}
}
Ответ 14
Лучшее решение для этого, если вы используете начальную загрузку, поэтому просто удалите @media print {} весь код из этого. и включите фоновую графику из большего количества настроек во время предварительного просмотра.
Ответ 15
Для IE
Если вы используете IE, перейдите к предварительному просмотру печати (щелкните правой кнопкой мыши по документу → предварительный просмотр печати), перейдите к настройкам и выберите параметр "Печатать цвет фона и изображения", выберите этот параметр и попробуйте.
![enter image description here]()
Ответ 16
Если вы загрузите Bootstrap без опции "Print media styles", у вас не будет этой проблемы, и вам не придется удалять код "@media print" вручную в файле bootstrap.css.
Ответ 17
Я дважды загружаю свой внешний исходный файл css и меняю media = "screen" на media = "print", и все границы для моей таблицы были показаны
Попробуйте следующее:
<link rel="stylesheet" media="print" href="bootstrap.css" />
<link rel="stylesheet" media="screen" href="bootstrap.css" />