background-origin和background-clip的区别

如题所述

background-clip 和 background-origin 是 CSS3 中新加的 background module 属性,用来确定背景的定位。

background-clip 用来判断 background 是否包含 border 区域。而 background-origin
用来决定 background-position 计算的参考位置。

语法为:
background-clip: [border | padding] [, [border | padding]]*
background-origin: [border | padding | content] [, [border |
padding | content]]*
对于 background-clip:
如果是
padding 值,则 background 忽略 padding边缘,border 是透明的。如果是 border 值,则background 包括
border 区域。如果 background-image 图片有多个,对应的 background-clip 值之间用逗号分隔。

对于 background-origin:
如果是
padding 值,则 position 相对于 padding 边缘("0 0" 为 padding 边缘的左上角,而 "100% 100%"
为右下角)。如果是 border 值,则意味着相对 border 边缘。而 border 值则相对于内容边缘。与 background-clip
相同,多个值也用逗号分隔。如果 background-clip 是 padding 值,background-origin 是 border 值,并且
background-position 是 "top left"(默认初始值),则背景图左上角将会被截取掉部分。

这两个属性仅从 CSS3 才出现,在未使用该属性 background module 中的默认表现又如何呢?

background-clip 默认类似于 background-clip:border。
background-origin 默认类似于 background-origin:padding。

但 IE 又是特例 (It sucks)。

在 IE6 、IE7 中,一般元素(button 等除外)的背景相当于:background-clip:border;
background-origin:border;
而 hasLayout 的元素(加上 button
等)的背景则相当于:background-clip:padding; background-origin:padding;

这一对 CSS3 属性已在 Mozilla, Safari 3 和 Konqueror
等浏览器中实现,不过都是通过其私有属性的表达方式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-17
虽然两者看上去实现的效果差不多,但是他们两个的原理是不同的。background-origin定义的是背景位置(background-position)的起始点;而background-clip是对背景(图片和背景色)的切割。
第2个回答  2017-10-17
background-clip 与 background-origin是css3中引入的两个跟元素背景相关的属性,它们有相同的可选值,即border、padding、content三种,而且这两个属性表示的都是元素背景与元素边框、补白(padding)和内容区域之间的某种关系。
background-origin定义的是背景位置(background-position)的起始点;而background-clip是对背景(图片和背景色)的切割。本回答被提问者采纳