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

时间:2013-12-26 11:45:59

标签: css background

这两个CSS属性之间存在差异:

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

3 个答案:

答案 0 :(得分:100)

它们之间没有区别。

如果您没有为background作为简写的六个属性中的任何一个指定值,则将其设置为其默认值。 <{1}}和none是默认设置。

一个明确将transparent设置为background-image,并隐式将none设置为background-color。另一种是另一种方式。

答案 1 :(得分:60)

作为关于 @Quentin 的补充信息,正如他正确地说的那样, background CSS属性本身是:

的简写
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;
你说所有背景属性都设置为 ...
您说的是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 transparentnone在这种情况下是相同的,所以在你的例子和原始问题中,不,它们之间没有区别。

但是!..如果你说background:nonebackground:red那么是......那就是一个很大的不同,正如我所说,第一个将所有属性设置为none/default和第二个一,只会更改color并保留其default州的其余部分。

简而言之:

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


Upd1:初始值(又名default

初始值是其longhand属性的初始值的串联:

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说明here


Upd2:更好地澄清background:none;规范。

答案 2 :(得分:7)

补充其他答案:如果您要将所有背景属性重置为其初始值(包括background-color: transparentbackground-image: none)而未明确指定任何值,例如transparent或{ {1}},您可以写下:

none