background-size为100% 100%时背景图填充不完整

栏目: Html · 发布时间: 6年前

内容简介:老项目中使用了绝对定位的背景图,拼接显示一张大图,由于绝对定位时使用了百分比,在全屏显示时,两图之间出现了条空白的先。原以为是百分比计算有问题,实际发现,并不是计算的问题,只是图形的宽高都是有小数的。简化实际项目,如下:

老项目中使用了绝对定位的背景图,拼接显示一张大图,由于绝对定位时使用了百分比,在全屏显示时,两图之间出现了条空白的先。

问题

原以为是百分比计算有问题,实际发现,并不是计算的问题,只是图形的宽高都是有小数的。

简化实际项目,如下:

<style>
.outer {
    position: relative;
    width: 100px;
    height: 200px;
}
.head {
    position: absolute;
    width: 100px;
    height: 99.5px;
    top: 0;
    background-image: url('./111.png');
    background-repeat: no-repeat;
    background-size: 100% 100%;
}
.body {
    position: absolute;
    width: 100px;
    height: 100.5px;
    top: 99.5px;
    background-image: url('./111.png');
    background-repeat: no-repeat;
    background-size: 100% 100%;
}
</style>
<div class="outer">
    <div class="head"></div>
    <div class="body"></div>
</div>

实际浏览器中的效果:

background-size为100% 100%时背景图填充不完整

很明显,两个div之间有间隙,照成了以为是定位偏差的错觉。

解决方法

高度整数

实践发现,当高度是整数的时候,设置100% 100%时不会出现间隙的问题。但是非固定高度布局的时候还是会有这个问题。

repeat

y轴方向上设置背景图repeat也能解决这个问题。

background-size其他值

100%

当设置background-size为100%时,间隙也是不会出现的,那他与100% 100%又有啥区别呢?

background-size有两个值,分别表示x轴方向和y轴方向,当我们设置为100%时,y轴的默认时auto。而100% 100%会拉伸图片,使得图片变形并完全覆盖(小数值不会),100% auto则是表示x轴百分百占用,y轴方向保持原先图片的宽高比,即以比例拉伸。

cover

cover同样也能完成任务,他的意思是将背景图按比例放大,使得能够完全覆盖背景区域,所以他的背景图是被截断的(纯色无所谓)。

拓展

其他属性

既然都讲到了background-size了,把他剩余的几个属性值也看一遍把。

contain

他表示将背景图放大,直到x或y轴一边达到最大,简单来说,就是100% auto或auto 100%,当背景元素与背景图比例不一致时就会出现空白。

px

同样支持数值,即背景图的大小。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品型社群

产品型社群

李善友 / 机械工业出版社 / 2015-3-1 / CNY 69.00

传统模式企业正在直面一场空前的“降维战争”, 结局惨烈,或生或死。 传统模式很难避免悲惨下场, 诺基亚等昔日庞然大物轰然倒塌, 柯达发明了数码成像技术却依然破产, 新商业的兴起到底遵循的是什么模式? 微信轻而易举干掉了运营商的短信业务, “好未来”为何让传统教育不明觉厉? 花间堂为什么不是酒店,而是入口? 将来不会有互联网企业与传统企业之分, ......一起来看看 《产品型社群》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具