css背景图片,在不同的分辨率下,显示不全

问题背景

今天遇到一个很奇怪的问题,css背景图,在同事电脑上,显示不全

企业微信截图_17084844351310.png

正常应该是这样的

image.png

分析原因

首先我们来看下之前的代码

.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
}

一个小知识点,供以后查漏补缺~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值