转载:CSS — background-clip vs. background-origin properties | by Tsz | Level Up Coding

When I was learning these 2 CSS properties, I felt confused since both of them have the same set of property values and their demonstration effect looks similar. After research and investigation, here’s how I understood the 2 properties right now.

In all the below examples, I will use a div with a 20px dashed border and 15px padding, with background-repeat. (The orange, green, and blue color below represents the border, padding, and content area respectively)

The div to be used in below examples

The background image to be used in the below examples

# background-origin

It defines where the starting position of the background. (from the upper left corner)

# border-box

When we set the value to “border-box”, the background begins at the upper-left corner of the border area

# padding-box

The background begins at the upper-left corner of the padding area

# content-box

The background begins at the upper-left corner of the content area

# background-clip

After understanding what the “background-origin” does, it’s easier to understand what is “background-clip”.

# Differences between the 2 properties

“background-clip” — let you define in which area the background should be displayed, background outside the area will be “clipped”.

“background-origin” — defines only the starting position of the background, we don’t have the power to define anything else (e.g.: where does it end) using this property on its own.

# content-box

We will start from “content-box” this time as it shows the most obvious effect. We can see that the background only fills up within the content area, but not the padding nor border area.

# padding-box

The background extended to the padding area this time.

# border-box

The background extends to the complete div, including its border area.

# More use cases

After understanding what each property does, we can use them independently or together for different use cases!

# Applying multiple values

Apart from the above single value examples, both properties support giving multiple values (separated by comma), to define the multiple background behavior.

In the coming examples, I set 2 background image URLs in the “background-image” property.

Then in the “background-clip” demo, I can define image A to be extended to the content box area; while image B can extend to the border-box area.

In the “background-origin” demo, the starting point of background A & background B can be different. (A begins at the content box, B begins at the border-box).

# Apply the 2 properties together

The 2 properties can be used together. In the below examples, I used “background-origin” to set the background image’s position; and used “background-clip” to decide what area of background images should be shown.

the starting points of the 2 background images are different!

Edited on