BUG -- 背景图片 background-postion 值为 百分比 时无效

最近再写公司官网,要求响应式,为了图方便用百分比遇到一个bug。

经过多方测试,此时遇到的问题是:当background-size的值与容器的width、height值相同时(同为px或者%),background-postion属性值设置为百分之无效。为此做了一个demo更为直观的理解这种问题:

 

造成这个问题的原理就是因为background-postion的值使用百分比时的计算公式:

x=(容器width - 背景size width) * 百分比;    y=(容器height - 背景size height) * 百分比。

可以看到在background-postion设置成百分比无效果的几个例子中(A C),background-size无论是px或是%,只要跟容器宽高相同,定位就没有作用。(D)同样是设置成百分比,但是size的y轴值是250px,所以90%的y轴定位值通过计算就是(300-250)*90%=45px。(B E)虽然size设置的跟容器宽高一样,但是postion值为px。。不需要计算。。所以倒是没有问题。

结论:不管是px还是%,容器宽高跟背景图宽高相同之后相减怎么都为0,乘以多少都是0,所以background-postion值为百分比无效的原因是因为background-size属性值的原因。

解决方案就是。。不用背景定位了,写成多层html嵌套来实现了。或者使用 background-origin:padding-box / content-box;用padding属性来打成定位效果(这个感觉还是要算来算去。。不推荐)。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值