背景:无与背景:透明有啥区别?

Posted

技术标签:

【中文标题】背景:无与背景:透明有啥区别?【英文标题】:background:none vs background:transparent what is the difference?背景:无与背景:透明有什么区别? 【发布时间】:2014-01-14 01:51:37 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

它们之间没有区别。

如果您没有为background 是其简写形式的六个属性中的任何一个指定值,则将其设置为其默认值。 nonetransparent 是默认值。

background-image 显式设置为none,并将background-color 隐式设置为transparent。另一个则相反。

【讨论】:

@herman — 不,他们不能。这与background-color: transparent; background-image: none; 相同。用户样式表可能会覆盖这些值中的一个或两个,但它会完全像 background-color: transparent; background-image: none; 已被明确写入一样。 那么,您是说“初始”属性值(用于未指定的属性)甚至会覆盖用户代理样式表?你有什么参考吗? 用户代理样式表实现规范,将这些属性的初始属性值定义为transparentnone【参考方案2】:

作为 @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;您是说所有背景属性都设置为 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

初始值是其普通属性的初始值的串联:

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; 规范。

【讨论】:

谢谢回答背景图像,背景重复的默认值是什么......?他们依赖浏览器吗?如果我理解您的解释,最好使用 background:none 这样所有值都没有设置为默认值? 您尝试过您发布的内容吗?是否所有值都设置为无?检查此演示中的console jsfiddle.net/dnzy2/6 当你设置:背景:无;您是说所有背景属性都设置为无... 不是一种说法是错误的 +1,这必须是公认的答案(如果正确)。 根据 MDN,background-image 的初始值为none,所以background-image: none === background-image: initial,因此,background: none === background: transparent,我猜跨度> 【参考方案3】:

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

background: initial;

【讨论】:

注意,IE 不支持initial。见Can I Use和MDN

以上是关于背景:无与背景:透明有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以使css中文本的背景不透明? [复制]

android开发的textview和imageview有啥区别吗?

设置div背景透明的方法?

rgb() 和 rgba() 不透明度有啥区别?

rgba(0,0,0,0) 和透明有啥区别?

不透明度和通过 alpha 通道 (rgba) 的不透明度有啥区别?