用div包裹img,img负责撑开div,Chrome仿真缩小比例会导致img下方出现一条细小的缝隙,且在iPhone7,小米note等真机上也会出现!!!
Chrome截图:
真机截图:
html结构:
<div class="w">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1506693681554&di=3a2f103706fe85de1bab64f0891d852c&imgtype=0&src=http%3A%2F%2Fp3.wmpic.me%2Farticle%2F2016%2F01%2F04%2F1451874125_hQRgXEqF.jpg" alt="">
</div>
<div class="w">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1506693681554&di=3a2f103706fe85de1bab64f0891d852c&imgtype=0&src=http%3A%2F%2Fp3.wmpic.me%2Farticle%2F2016%2F01%2F04%2F1451874125_hQRgXEqF.jpg" alt="">
</div>
<div class="w">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1506693681554&di=3a2f103706fe85de1bab64f0891d852c&imgtype=0&src=http%3A%2F%2Fp3.wmpic.me%2Farticle%2F2016%2F01%2F04%2F1451874125_hQRgXEqF.jpg" alt="">
</div>
css代码:
html,
body {
margin: 0;
}
.w {
font-size:0;
padding: 0;
margin: 0;
overflow:hidden;
font-size: 0;
}
img {
max-height: 100%;
max-width: 100%;
margin:0;
// 更改img为block,无法解决问题
display:block;
// 不更改display属性,按照如下属性也无法解决问题
line-height: 0;
vertical-align:top; // 或者bottom
}
注意:
- 外层div的font-size已经设置为0;
- img已经设置为block,line-height为0;
- Chrome上不缩放比例不会出现空隙;
- 只在某系机型上出现,iPhone plus系列,大屏小米机会出现,小米6,iPhone7 plus等不出现;
这个问题天猫活动页也有这个问题:天猫活动页
真机截图:
codepen的演示地址:codenpen
如何消除这个大约1像素的空隙?
这种现象的原因是什么?
个人猜想可能和viewport相关,但是找不到资料···
关于解决方案:
万不得已可以
margin-top: -1px;
,另外在meta里设置content width大一点也能缓解问题。
加个
margin-top:-1px
来hack
一下效果如下:
在别的机型即使没有这个
bug
,向上偏移1px
也不会有丝毫影响,所以我觉得这样hack
没毛病。至于具体产生原因,我也不太清楚,去谷歌
github
开源项目看了一下V8
和Chrome
相关的,好像没有搜到相关issure
。已经邀请了@justjavac,不知道大佬会不会找到问题相关源码或答案解析解答一番。?
老外跟你遇到了一样的问题,不知道老外解决没有:
请点击stackoverflow查看