When I was helping others adjust their code today, I saw a style:
background-position: 50% 0;background-size: 100% auto;
Background-size: 100% auto, which means the background image width It is the element width * 100%, and the height is scaled proportionally. See css3 background for details.
For background-position, it is natural to think that the percentage is calculated based on the width of the parent element, but background-position is really not, it has its own set of principles. Detailed introduction below.
1. Equivalent writing methodsWhen reading various tutorials, there are the following equivalent writing methods:
So why are left and top equivalent to 0% 0%, and right bottom equivalent to 100% 100%?
2. Background-position percentage calculation formula
background-postion:x y;x:{容器(container)的宽度?背景图片的宽度}*x百分比,超出的部分隐藏。y:{容器(container)的高度?背景图片的高度}*y百分比,超出的部分隐藏。
With this formula, it is easy to understand how to write 100%. After a little calculation, it is easy to understand the above various equivalents. The way to write it.
3. Examples1. background-position: center center is equivalent to background-position: 50% 50% is equivalent to background-position:?px ?px
Background is used in the example The picture is as follows [Size: 200px*200px]:
The background image is centered in the container.
<style type="text/css">.wrap{ width: 300px; height: 300px; border:1px solid green; background-image: url(img/image.png); background-repeat: no-repeat;/* background-position: 50% 50%;*/ background-position: center center;}</style><div class="wrap"></div>
The effect is to center the background image
As above, the background image can be centered by setting the percentage and keywords. If you want to achieve How much should be set to center the image through specific values?
According to the above formula:
x=(width of container - background image width)*x percentage=(300px-200px)*50%=50px;
y= (Container height - background image height) * y percentage = (300px - 200px) * 50% = 50px;
That is, set background-postion: 50px 50px;
Test it:
<style type="text/css">.wrap{ width: 300px; height: 300px; border:1px solid green; background-image: url(img/image.png); background-repeat: no-repeat;/* background-position: 50% 50%;*//* background-position: center center;*/ background-position: 50px 50px;}</style><div class="wrap"></div>
The effect is also centered.