Je suis nouveau ici dans cette entreprise et nous avons un produit qui utilise des kilomètres de CSS. J'essaie de créer une feuille de style imprimable pour notre application, mais j'ai des problèmes avec background-color
in @media print
.
@media print {
#header{display:none;}
#adwrapper{display:none;}
td {
border-bottom: solid;
border-right: solid;
background-color: #c0c0c0;
}
}
Tout le reste fonctionne, je peux modifier les bordures et autres mais background-color
je ne passerai pas par l'impression. Maintenant, je comprends que vous ne pourrez peut-être pas répondre à ma question sans plus de détails. J'étais juste curieux de savoir si quelqu'un avait ce problème, ou quelque chose de similaire, avant.
css
media-queries
Weston Watson
la source
la source
@media print
requête qui supprime les couleurs d'arrière-plan des tables (par exemple des rayures).Réponses:
SI un utilisateur a désactivé l'option "Imprimer les couleurs et les images d'arrière-plan" dans ses paramètres d'impression, aucun CSS ne remplacera cela, alors tenez toujours compte de cela. Ceci est un paramètre par défaut .
Une fois que cela est défini pour imprimer les couleurs et les images d'arrière-plan, ce que vous avez là fonctionnera.
On le trouve à différents endroits. Dans IE9beta, il se trouve dans Imprimer-> Options de page sous Options de papier
Dans FireFox, c'est dans Mise en page -> Onglet [Format & Options] sous Options.
la source
*{ color-adjust: exact; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
Pour activer l'impression en arrière-plan dans Chrome:
la source
color-adjust
place.Je l'ai:
CSS:
Fonctionne pour toutes les boîtes - y compris les cellules de tableau !!!
la source
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#fffada', endColorstr='#fffada')"; /* IE8 */
Si vous voulez que vos images de sprite soient visibles, utilisez la technique img / clip css-tricks.com/css-sprites-with-inline-images , qui vous donnera des images dans IE9 et FF ( pas IE8 cependant)Essayez ceci, cela a fonctionné pour moi sur Google Chrome:
la source
-webkit-print-color-adjust: exact;
seul,is Not enough
vous devez utiliser!important
avec l'attributc'est un aperçu d'impression sur chrome après avoir ajouté
!important
à chacunbackground-color
etcolor
attrubute dans chaque taget ceci est un aperçu d'impression sur chrome avant d' ajouter
!important
maintenant, pour savoir comment
inject
!important
diviser le style, lisez cette réponse Je ne parviens pas à injecter un style avec une règle "! important"la source
Deux solutions qui fonctionnent (au moins sur Chrome moderne - n'ont pas été testées au-delà):
la source
color-adjust
ou la variante webkit, je n'ai en fait pas besoin de la règle importante.Si vous cherchez à créer des pages "imprimables", je vous recommande d'ajouter "! Important" à votre CSS d'impression @media. Cela encourage la plupart des navigateurs à imprimer vos images d'arrière-plan, vos couleurs, etc.
EXEMPLES:
la source
Il existe une autre astuce que vous pouvez faire sans activer l'option de bordure d'impression mentionnée dans d'autres articles. Puisque les bordures sont imprimées, vous pouvez simuler des couleurs d'arrière-plan solides avec ce hack:
Activez-le en ajoutant la classe à votre élément:
Bien que cela nécessite un code supplémentaire et une attention particulière pour rendre les couleurs d'arrière-plan visibles, c'est pourtant la seule solution que je connaisse.
Notez que ce hack ne fonctionnera pas sur des éléments autres que
display: block;
oudisplay: table-cell;
, donc par exemple<table class="your-background">
et<tr class="your-background">
ne fonctionnera pas.Nous utilisons cela pour obtenir des couleurs d'arrière-plan dans tous les navigateurs (toujours, IE9 + requis).
la source
Pour le chrome, j'ai utilisé quelque chose comme ça et ça a marché pour moi.
Dans l'étiquette corporelle,
Ou pour un élément particulier, disons si vous avez un tableau et que vous voulez remplir un td c'est à dire une cellule,
la source
Bien que l'
!important
utilisation soit généralement désapprouvée, il s'agit du code offensantbootstrap.css
qui empêche l'impression des lignes de tableaubackground-color
.Supposons que vous essayez de styliser le HTML suivant:
Pour remplacer ce CSS, placez la règle suivante (plus spécifique) dans votre feuille de style:
Cela fonctionne car la règle est plus spécifique que la valeur par défaut du bootstrap.
la source
J'ai trouvé ce problème, car j'ai eu un problème similaire en essayant de générer un PDF à partir d'une sortie html dans Google Apps Script où les couleurs d'arrière-plan ne sont pas non plus "imprimées".
Les solutions
-webkit-print-color-adjust:exact;
et!important
bien sûr n'ont pas fonctionné, mais elles ontbox-shadow: inset 0 0 0 1000px gold;
fait ... super hack, merci beaucoup :)la source
Je pensais que j'ajouterais une aide récente et pertinente de 2015 à partir d'une expérience css d'impression récente.
Était capable d'imprimer des arrière-plans et des couleurs indépendamment des paramètres de la boîte de dialogue d'impression.
Pour ce faire, j'ai dû utiliser une combinaison de ! Important & -webkit-print-color-Adjust: exact! Important pour que l'arrière-plan et les couleurs s'impriment correctement.
De plus, lors de la déclaration des couleurs, j'ai trouvé que les zones les plus tenaces avaient besoin d'une définition directement pour votre cible. Par exemple:
Et votre CSS:
la source
Testé et fonctionnel sur Chrome, Firefox, Opera et Edge d'ici 2016/10. Devrait fonctionner sur n'importe quel navigateur et devrait toujours avoir l'air comme prévu.
Ok, j'ai fait une petite expérience multi-navigateurs pour imprimer les couleurs d'arrière-plan. Copiez, collez et profitez-en!
Voici une page HTML imprimable complète pour le bootstrap:
la source
La meilleure «solution» que j'ai trouvée est de fournir un bouton ou un lien «Imprimer» bien en vue qui ouvre une petite boîte de dialogue expliquant de manière audacieuse, succincte et concise la nécessité d'ajuster les paramètres de l'imprimante (avec une instruction à puce ABC 123) pour activer l'arrière-plan et l'impression d'images. Cela a été très réussi pour moi.
la source
Dans certains cas (blocs sans contenu, mais avec arrière-plan), il peut être remplacé en utilisant des bordures, individuellement pour chaque bloc.
Par exemple:
la source
Vous pouvez utiliser la balise
canvas
et "dessiner" l'arrière-plan, qui fonctionnent sur IE9, Gecko et Webkit.la source
Si cela ne vous dérange pas d'utiliser une image au lieu d'une couleur d'arrière-plan (ou éventuellement une image avec votre couleur d'arrière-plan), la solution ci-dessous a fonctionné pour moi dans FireFox, Chrome et même IE sans aucun dépassement. Placez l'image quelque part sur la page et masquez-la jusqu'à ce que l'utilisateur imprime.
Le html sur la page avec l'image de fond
Le Css
}
la source
!important
valeur sur chaque attribut de ma classe qui l'a ensuite fait fonctionner.Ne définissez pas l'
background-color
intérieur de la feuille de style d'impression. Définissez simplement l'attribut dans le fichier css normal et cela fonctionne bien :)Consultez cet exemple: Le modèle HTML d'impression ultime avec en-tête et pied de page
Démo: le modèle HTML d'impression ultime avec démo d'en-tête et de pied de page
la source
Fonctionne dans Chrome et Edge
la source