背景:无与背景:透明有什么区别?


119

这两个CSS属性之间是否有区别

background: none;
background: transparent;
  1. 它们都有效吗?
  2. 应该使用哪一个?为什么?

Answers:


111

它们之间没有区别。

如果您没有为background速记的任何六个属性指定值,则将其设置为其默认值。nonetransparent是默认值。

一个显式设置为background-imagenone而隐式设置background-colortransparent。另一种情况是相反的。


2
@herman —不,他们不能。这与相同background-color: transparent; background-image: none;。用户样式表可能会覆盖这些值中的一个或两个,但是这样做的方式就像background-color: transparent; background-image: none;已显式编写的一样。
Quentin

那么,您是说“初始”属性值(用于未指定的属性)甚至覆盖用户代理样式表吗?你有参考吗?
Herman 2015年

用户代理样式表实现规范,该规范将这些属性的初始属性值定义为transparentnone
2015年

63

作为@Quentin答案的附加信息,正如他正确地说的那样, backgroundCSS属性本身是以下内容的简写:

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

就是说,您可以将所有样式归为一类,例如:

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

(在此示例中)为:

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

所以……当您设置时:background:none;
您是在说所有背景属性都设置为none ……
您是在说,background-image: none;而所有其他属性都处于initial状态(因为它们没有被声明)。
因此,background:none;是:

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

现在,当您仅定义颜色(在您的情况下transparent)时,您基本上是在说:

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

我重复一遍,正如@Quentin正确地说在这种情况下default transparentand none值相同,因此在您的示例中,对于您的原始问题,不,它们之间没有区别。

但是!.....如果您说background:noneVs,background:red那么是......有很大的不同,正如我所说,第一个将所有属性设置为none/default,第二个将仅更改属性,其余属性color保持在他的default状态。

简而言之:

简短答案:不,根本没有区别(在您的示例和原始问题中)
长长答案:是,有很大区别,但直接取决于授予属性的属性。


Upd1:初始值(又名default

初始值其长期属性的初始值的串联:

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

在这里查看更多background说明


Upd2:更好地阐明background:none;规格。


thx回答背景图像,背景重复...的默认值是多少?他们依赖浏览器吗?如果我理解您的解释,最好使用background:none,那么这些值都不会设置为默认值吗?
web-tiki 2013年

您是否尝试过发布的内容?所有值都设置为无吗?查看console此演示jsfiddle.net/dnzy2/6
DaniP 2013年

设置时:background:none; 您是说所有的背景属性都设置为none ... 不是说错的方法
DaniP 2013年

2
+1,这必须是可接受的答案(如果正确)。
Pacerier 2014年

7

作为其他答案的补充:如果要将所有背景属性重置为其初始值(包括background-color: transparentbackground-image: none),而没有明确指定任何值,例如transparentnone,则可以这样编写:

background: initial;

5
请注意,IE不支持initial。看到我可以用MDN
chharvey
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.