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?

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.


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.


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;

5
Attention, IE ne prend pas en charge initial. voir Can I Use et MDN
— chharvey
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.