background: none vs background: transparent Jaka jest różnica?


119

Czy istnieje różnica między tymi dwoma właściwościami CSS:

background: none;
background: transparent;
  1. Czy oba są ważne?
  2. Którego należy użyć i dlaczego?

Odpowiedzi:


111

Nie ma między nimi różnicy.

Jeśli nie określisz wartości dla żadnej z pół tuzina właściwości, która backgroundjest skrótem dla, zostanie ustawiona na wartość domyślną. nonei transparentsą wartościami domyślnymi.

One jawnie ustawia background-imageto nonei niejawnie ustawia background-colorto transparent. Drugi jest na odwrót.


2
@herman - Nie, nie mogą. To jest to samo co background-color: transparent; background-image: none;. Arkusz stylów użytkownika może przesłonić jedną lub obie te wartości, ale zrobi to dokładnie tak, jakby background-color: transparent; background-image: none;został napisany jawnie.
— Quentin

Więc chcesz powiedzieć, że "początkowa" wartość właściwości (która jest używana dla nieokreślonych właściwości) zastępuje nawet arkusze stylów klienta użytkownika? Czy masz jakieś referencje?
— herman

Arkusze stylów agenta użytkownika implementują specyfikację, która definiuje początkową wartość właściwości tych właściwości jako transparenti none.
— Quentin

63

Jako dodatkowe informacje na temat odpowiedzi @Quentin i jak słusznie mówi, backgroundsama właściwość CSS jest skrótem dla:

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

Oznacza to, że możesz zgrupować wszystkie style w jednym, na przykład:

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

To byłoby (w tym przykładzie):

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

Więc ... kiedy ustawiasz: background:none;
mówisz, że wszystkie właściwości tła są ustawione na brak ...
Mówisz to background-image: none;i wszystkie inne o initialstanie (ponieważ nie są deklarowane).
Tak więc background:none;jest:

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

Teraz, kiedy definiujesz tylko kolor (w twoim przypadku transparent), zasadniczo mówisz:

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

Powtarzam, ponieważ @Quentin słusznie mówi, że wartości default transparenti w tym przypadku są takie same, więc w twoim przykładzie i w twoim pierwotnym pytaniu nie ma między nimi różnicy.none

Ale! .. jeśli powiesz background:noneVs, background:redto tak ... jest duża różnica, jak powiedziałem, pierwsza ustawiłaby wszystkie właściwości, none/defaulta druga zmieniłaby tylko colori pozostałaby w swoim defaultstanie.

Więc w skrócie:

Krótka odpowiedź : nie, nie ma żadnej różnicy (w twoim przykładzie i oryginalnym pytaniu)
Długa odpowiedź : Tak, jest duża różnica, ale zależy bezpośrednio od właściwości nadanych atrybutowi.


Upd1: Wartość początkowa (aka default)

Wartość początkowa konkatenacja początkowych wartości jej własności odręcznych:

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

Zobacz więcej backgroundopisów tutaj


Aktualizacja2: Lepsze wyjaśnienie background:none;specyfikacji.


thx za odpowiedź, jakie są domyślne wartości dla tła-obrazu, powtórzenia tła ...? czy zależą od przeglądarki? Jeśli rozumiem twoje wyjaśnienie, lepiej użyć tła: brak, więc żadna z wartości nie jest ustawiona na domyślną?
— web-tiki

Czy próbowałeś tego, co publikujesz? Czy wszystkie wartości są ustawione na brak? Sprawdź consoleto demo jsfiddle.net/dnzy2/6
— DaniP

kiedy ustawisz: background: none; mówisz, że wszystkie właściwości tła są ustawione na brak ... Nie ma sposobu, aby powiedzieć, że jest źle
— DaniP

2
+1, to musi być zaakceptowana odpowiedź (jeśli jest poprawna).
— Pacerier

7

Aby uzupełnić inne odpowiedzi: jeśli chcesz zresetować wszystkie właściwości tła do ich wartości początkowej (która obejmuje background-color: transparenti background-image: none) bez jawnego określania wartości, takich jak transparentlub none, możesz to zrobić, pisząc:

background: initial;

5
Uważaj, IE nie obsługuje initial. zobacz Can I Use i MDN
— chharvey
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.