图片与图片之间有间隙,怎么解决

在 chrome 正常浏览没有问题,但是使用模拟器的 Responsive 模式图片与图片之间会出现 1px 的间隙。
如果不使用 viewport 缩放也没有问题,加上 <meta name="viewport" content="width=375, minimum-scale = 0.8533333333333334, maximum-scale = 0.8533333333333334, target-densitydpi=device-dpi"> 才会出现间隙。

一开始以为是 inline-blockline-height 的影响,但是将 img 设置为 block 还是会有间隙。

回答中说了很多解决 inline-block 有空白间隙的方案,张鑫旭的幽灵节点的文章我看过,也都试过相关的解决方案,但是都没有用。我将viewport的缩放去掉就不会有间隙的问题,所以我认为是viewport缩放的问题

请问出现这种情况的原因是什么呢?要怎样解决。

线上有问题的页面地址如下: https://activitycommonstatic....
使用手机查看,会发现间隙非常清晰。

相关代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=375, minimum-scale = 0.8533333333333334, maximum-scale = 0.8533333333333334, target-densitydpi=device-dpi">
<title>Document</title>
<style>
  body {
    width: 375px;
    margin: 0;
    padding: 0;
    background: red;
  }
  .container {
    font-size: 0;
  }
  .live-image {
    width: 100%;
    display: block;
  }
</style>
</head>
<body>
<div class="container">
  <img src="https://timgsa.baidu.com/timg?image&amp;quality=80&amp;size=b9999_10000&amp;sec=1555679075809&amp;di=1443a3cfdc2171b7b3d1377a647bf42e&amp;imgtype=0&amp;src=http%3A%2F%2Fpic49.nipic.com%2Ffile%2F20140923%2F12106414_110747139072_2.jpg" class="live-image">
  <img src="https://timgsa.baidu.com/timg?image&amp;quality=80&amp;size=b9999_10000&amp;sec=1555679075809&amp;di=1443a3cfdc2171b7b3d1377a647bf42e&amp;imgtype=0&amp;src=http%3A%2F%2Fpic49.nipic.com%2Ffile%2F20140923%2F12106414_110747139072_2.jpg" class="live-image">
</div>
</body>
</html>
阅读 9.5k
6 个回答

那条黑线其实是你的背景色。

你这个现象的原因是因为浏览器对于图片的高度计算不准确的原因照成的,因为你进行了放大缩小,导致浏览器计算出来的大小和实际的大小有偏差,所以就留了点空白。

建议:既然整页都是图片,那么加 viewport 一点用也没有,去掉就没问题。

实际测下来是 maximum-scale 的原因,去掉就好了。

*{
    padding: 0;
    margin: 0;
  }

加上试试

图片margin-top:-1px

微信公众号文章经常遇见这个问题。。。
img 是个 replaced inline element
每个浏览器默认的样式是不一样的,所以应该

img {
    display: block
}

需要知道那间隙怎么来的,img是inline-block,所有的inline-block元素之间都会有空白。由此可以通过下列方法
(1)第一种方案:图片浮动

// 图片浮动
float: left;

(2)第二种方案:设置字体

// 需要设置父级
font-size: 0;

(3)第三种方案:弹性布局

// 需要设置父级
display: flex;

(4)第四种方案:换成block

display: block;

把图片display变成block完美解决

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题