background: none vs background: transparent Quelle est la différence?

119

Y a-t-il une différence entre ces deux propriétés CSS:

background: none;
background: transparent;
  1. Sont-ils tous les deux valides?
  2. Lequel doit être utilisé et pourquoi?
web-tiki
la source

Réponses:

111

Il n'y a aucune différence entre eux.

Si vous ne spécifiez pas de valeur pour l'une des demi-douzaines de propriétés qui backgroundest un raccourci pour, elle est définie sur sa valeur par défaut. noneet transparentsont les valeurs par défaut.

On définit explicitement le background-imageto noneet implicitement définit le background-colorto transparent. L'autre est l'inverse.

Quentin
la source
2
@herman - Non, ils ne peuvent pas. C'est la même chose que background-color: transparent; background-image: none;. Une feuille de style utilisateur peut remplacer l'une de ces valeurs ou les deux, mais elle le fera exactement comme si elle background-color: transparent; background-image: none;avait été écrite explicitement.
Quentin
Donc, vous dites que la valeur de la propriété "initiale" (qui est utilisée pour les propriétés non spécifiées) remplace même les feuilles de style de l'agent utilisateur? Avez-vous des références?
herman
Les feuilles de style de l'agent utilisateur implémentent la spécification, qui définit la valeur de propriété initiale de ces propriétés sous la forme transparentet none.
Quentin
63

En tant qu'informations supplémentaires sur la réponse @Quentin , et comme il le dit à juste titre, la backgroundpropriété CSS elle-même est un raccourci pour:

background-color
background-image
background-repeat
background-attachment
background-position

Cela signifie que vous pouvez regrouper tous les styles en un seul, comme:

background: red url(../img.jpg) 0 0 no-repeat fixed;

Ce serait (dans cet exemple):

background-color: red;
background-image: url(../img.jpg);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: 0 0;

Donc ... lorsque vous définissez: background:none;
vous dites que toutes les propriétés d'arrière-plan sont définies sur aucune ...
Vous dites cela background-image: none;et toutes les autres à l' initialétat (car elles ne sont pas déclarées).
Alors, background:none;c'est:

background-color: initial;
background-image: none;
background-repeat: initial;
background-attachment: initial;
background-position: initial;

Maintenant, lorsque vous définissez uniquement la couleur (dans votre cas transparent), vous dites essentiellement:

background-color: transparent;
background-image: initial;
background-repeat: initial;
background-attachment: initial;
background-position: initial;

Je le répète, comme @Quentin le dit à juste titre, les valeurs default transparentet dans ce cas sont les mêmes, donc dans votre exemple et pour votre question d'origine, non, il n'y a pas de différence entre elles.none

Mais! .. si vous dites background:noneVs background:redalors oui ... il y a une grande différence, comme je l'ai dit, le premier définirait toutes les propriétés sur none/defaultet le second, ne changera que le coloret restera le reste dans son defaultétat.

Donc en bref:

Réponse courte : Non, il n'y a aucune différence (dans votre exemple et question originale)
Réponse longue : Oui, il y a une grande différence, mais dépend directement des propriétés accordées à l'attribut.


Upd1: valeur initiale (aka default)

Valeur initiale la concaténation des valeurs initiales de ses propriétés longues:

background-image: none
background-position: 0% 0%
background-size: auto auto
background-repeat: repeat
background-origin: padding-box
background-style: is itself a shorthand, its initial value is the concatenation of its own longhand properties
background-clip: border-box
background-color: transparent

Voir plus de backgrounddescriptions ici


Upd2: Clarifiez mieux la background:none;spécification.

OGM
la source
thx pour réponse quelles sont les valeurs par défaut pour l'image d'arrière-plan, la répétition d'arrière-plan ...? dépendent-ils du navigateur? Si je comprends votre explication, il est préférable d'utiliser l'arrière-plan: aucun donc aucune des valeurs n'est définie par défaut?
web-tiki
Avez-vous essayé ce que vous publiez ?? Toutes les valeurs sont-elles réglées sur aucune? Vérifiez le consolesur cette démo jsfiddle.net/dnzy2/6
DaniP
lorsque vous définissez: background: none; vous dites que toutes les propriétés d'arrière-plan sont définies sur aucune ... Ce n'est pas un moyen de dire que c'est faux
DaniP
2
+1, cela doit être la réponse acceptée (si elle est correcte).
Pacerier
7

Pour compléter les autres réponses: si vous souhaitez réinitialiser toutes les propriétés d'arrière-plan à leur valeur initiale (qui inclut background-color: transparentet background-image: none) sans spécifier explicitement une valeur telle que transparentou none, vous pouvez le faire en écrivant:

background: initial;
Herman
la source
5
Attention, IE ne prend pas en charge initial. voir Can I Use et MDN
chharvey