Bootstrap print CSS supprime la couleur d'arrière-plan
Lorsque j'utilise bootstrap, il supprime la couleur de fond de tout lorsque j'essaie d'imprimer ma page. Presque tout sur mon site Web utilise des classes d'amorçage, je veux donc éviter beaucoup de CSS manuel en dehors de l'amorçage. J'ai découvert que bootstrap utilise @media print
pour supprimer la couleur d'arrière-plan. J'utilise également un thème bootstrap (thème uni) qui supprime également la couleur d'arrière-plan.
theme-united.css
@media print
*, *:before, *:after {
background: rgba(0, 0, 0, 0)!important;
color: rgb(0, 0, 0)!important;
-webkit-box-shadow: none!important;
box-shadow: none!important;
text-shadow: none!important;
bootstrap.min.css
@media print
*,:after,:before {
color: rgb(0, 0, 0)!important;
text-shadow: none!important;
background: 0 0!important;
-webkit-box-shadow: none!important;
box-shadow: none!important;
Existe-t-il un moyen de s'assurer que la couleur de fond n'est pas supprimée lors de l'impression sans modifier ces 2 fichiers CSS ?
Par exemple : lorsque j'utilise.alert-danger, je veux que ce danger d'alerte soit imprimé tel qu'il est affiché à l'écran, donc serait imprimé comme une boîte rouge.
Voir JSFiddle :
http://jsfiddle.net/7mtk7wrh/
Solution du problème
Malheureusement, il n'y a pas de bonne réponse à votre question - mais peut-être que si vous comprenez le pourquoi, vous pouvez choisir une voie à suivre.
Pourquoi?
Il est vrai que Bootstrap utilise le @media print { * { color: $fff; background: transparent; }}
-- mais il y a une raison très solide. Ce morceau de code est en fait dérivé du projet normalizer.css (par un collège de @mdo, @necolas) - son intention est de faire en sorte que tous les navigateurs se comportent de la même manière. Ces gars ont choisi de "normaliser" le CSS pour une très bonne raison :
Avec la plupart des navigateurs, on peut choisir d'inclure ou d'exclure la couleur d'arrière-plan, de sorte que le comportement n'est pas standard même dans le même navigateur. Imaginez pendant une seconde un site Web avec un arrière-plan très sombre avec du texte blanc - lors de l'impression avec des arrière-plans désactivés, vous aurez l'impression de ne rien imprimer - alors qu'en réalité vous imprimez du texte blanc sur aucun arrière-plan (blanc).
Il n'y avait aucun moyen de tenir compte de toutes les différentes utilisations de la couleur, ils ont donc choisi d'aller en noir (police) et en blanc (arrière-plan, en fait « transparent »). Même le choix du noir a été bien pensé - c'est une meilleure solution d'impression, car la plupart des imprimantes couleur ont plus "d'encre/toner" noir (plus économique) et elles n'ont pas besoin de mélanger les couleurs pour faire du noir (donc plus rapide).
N'oubliez pas que Bootstrap est également un "cadre" - donc un point de départ si vous voulez - et félicitations à @mdo et @necolas pour avoir eu la prévoyance de penser à cela en termes d'établissement d'une base de référence prévisible. (Non, je ne les connais pas.)
Non...
Donc, la pensée ici est : "et si nous pouvions" revenir en arrière "et supprimer cela. Malheureusement, CSS ne fonctionne pas comme ça - oui, les navigateurs chargent les déclarations CSS dans une" file d'attente "où la dernière déclaration l'emporte (LIFO, ou last-in -first-out), mais je ne connais pas de moyen de supprimer cette pile. Les développeurs CSS en ajoutent donc simplement plus à la fin...
On pourrait donc supposer que nous pouvons revenir en arrière --- ajouter un * { background-color: inherit }
. Le problème est que inherit
revient à la propriété parent, mais *
est la racine, donc il n'a rien à revenir. Idem pour initial
!
Peut-être!
Il nous reste donc 4 options, aucune d'entre elles n'est ce que vous espériez, mais c'est ce que c'est. Par ordre de difficulté:
@media print {
.alert-danger {
color: yellow!important;
background-color: red!important;
}
}
Les copies CDN de BS fonctionneront maintenant, mais vous avez alors le problème de l'utilisateur qui n'imprime peut-être pas les arrière-plans et qui a la sortie blanche (jaune dans l'exemple) sur blanc!
Pour terminer
Eh bien, j'espère qu'apprendre le pourquoi était au moins une façon pour vous de penser à une solution de contournement. La règle générale que je suis est que lors de l'impression, l'arrière-plan est (devrait être) toujours blanc. Lorsque vous êtes contraint de cette façon, vous commencez à penser à de nouvelles idées, comme des icônes d'exclamation autour du texte qui ne font que "s'imprimer" ( @media only screen {.hidden-screen { display: none; }}
)
Commentaires
Enregistrer un commentaire