内容简介:老项目中使用了绝对定位的背景图,拼接显示一张大图,由于绝对定位时使用了百分比,在全屏显示时,两图之间出现了条空白的先。原以为是百分比计算有问题,实际发现,并不是计算的问题,只是图形的宽高都是有小数的。简化实际项目,如下:
老项目中使用了绝对定位的背景图,拼接显示一张大图,由于绝对定位时使用了百分比,在全屏显示时,两图之间出现了条空白的先。
问题
原以为是百分比计算有问题,实际发现,并不是计算的问题,只是图形的宽高都是有小数的。
简化实际项目,如下:
<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>
实际浏览器中的效果:
很明显,两个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
同样支持数值,即背景图的大小。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 根据 轮播图背景色 自动填充剩余背景色的 走马灯
- 如何去除讨厌的Chrome自动填充黄色背景
- AES 算法(三):填充模式
- mybatis自动填充时间字段
- laravel 使用 Faker 数据填充
- Faker 虚拟数据填充和源码解析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
21天学通C语言
(美国)琼斯(Bradley L.Jones) (美国)埃特肯(Peter Aitken) / 信达工作室 / 人民邮电出版社 / 2012-8 / 69.00元
《21天学通C语言(第6版•修订版)》是初学者学习C语言的经典教程。本版按最新的标准(ISO∕IEC:9899-1999),以循序渐进的方式介绍了C语言编程方面知识,并提供了丰富的实例和大量的练习。通过学习实例,并将所学的知识用于完成练习,读者将逐步了解、熟悉并精通C语言。《21天学通C语言(第6版•修订版)》包括四周的课程。第一周的课程介绍了C语言程序的基本元素,包括变量、常量、语句、表达式、函......一起来看看 《21天学通C语言》 这本书的介绍吧!