问题背景
今天遇到一个很奇怪的问题,css背景图,在同事电脑上,显示不全
正常应该是这样的
分析原因
首先我们来看下之前的代码
.dtc-logo{
width 91px
min-width 91px
height 55px
background url('https://xxxx/image/xxxx.png')
background-size: cover;
margin-right 20px
}
对背景图片使用了background-size: cover之后,分辨率的不同,背景图片会出现显示不全的情况。
因为用的是cover属性,它的作用是把背景图片放大到适合元素容器的尺寸,图片比例不变,但是超出容器的部分可能会裁掉。
除了cover属性,background-size还有一个100% 100%(拓展的有 100% auto, auto 100%)属性,它是按容器的比例来进行填充撑满(注意,可能会变形)。
这里想要显示完全肯定是用的是100%,这里讲一讲它的特性:
background-size:这个属性有两个值,第一个值为x轴方向的缩放比例或者px,第二个值为y轴方向的缩放比例或者px,如果只写一个值,则第二个值默认为auto(根据图片原来的比例,以及现有的宽度,来确定高度)
比方说:你有一张长宽比例为4:3的图片,有一个width:100px;height:50px;的盒子(也就是长宽比例为2:1)。
background-size:100% 100%;这种方式设置完背景图片的大小后,会完全铺满整个盒子,并且背景图片的比例会因此改变为2:1
background-size:100%;这种方式设置的背景图片的大小,x轴会和盒子一样的宽,但是y轴由于默认为auto,根据上面的理论计算得背景图片的高度为300px,但是盒子只有50px高,超出的部分隐藏,所以看两种写法的效果自然就不一样啦。
第一种效果你一定会看到完整的背景图片,但是有可能被挤压(失去图片原来的比例)
第二种效果你不一定能看到完整的图片,但是图片的比例没有发生变化。
解决方案
改后的代码
.dtc-logo{
width 90px
min-width 90px
height 55px
background-image url('https://xxxx/image/xxxx.png')
background-repeat: no-repeat;
background-size: 100% auto;
margin-right 20px
}
一个小知识点,供以后查漏补缺~