html背景图片压缩显示,css背景图片在浏览器缩小时为什么下面出现了白色的

博客解释了CSS中`background-size:cover`属性的工作原理,指出在body元素未指定高度时,背景图片可能不会完全覆盖容器。问题在于body的高度依赖于内容,而非固定。解决方案是设置body和html的高度为100%,确保背景图能覆盖整个区域。
摘要由CSDN通过智能技术生成

我来补充一下原因。

首先,我测试了一下,的确存在这个问题。

Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area.

这里有2个要点。1是保持图片自身的宽高比不变。2是会缩放图片,使得缩放后的图片所占据的尺寸,在宽、高两个维度上都要分别大于(或等于)容器的宽、高。

从这2个要点,其实可以得到结论,如果一个容器存在一定的宽和高(也就是都不为0),那么background-size: cover;一定可以保证背景图缩放至覆盖满整个容器。

但为什么题主发现不是这样呢?

注意到用的是body这个元素,而body在不通过css定义高的情况下,其高度是取决于内容的。那么,就可以想到,body的内容高度可能没有那么高,比如像下图这样:

bVmJR2

这张图内可以看到body的高度只有100px(因为整个文档里只有这一行文字内容)。现在,再回头考虑那2个要点。背景图在保持比例的基础上进行缩放,且满足宽高分别超过body的宽高。显然,这张图只需要填满那个小区域就足够了。

为什么不继续扩大一点呢? 请注意W3C的那段话里的smallest。

所以,要保证覆盖满想要的整个区域,就让body填满整个区域,也就是为body和html添加height: 100%;。width: 100%;是不需要的,因为块元素默认就是满宽度。这就是 @Naraku_ 给的答案了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值