大于容器的图像在 IE 和 Edge 上创建滚动条

image larger than container creates scrollbar on IE and Edge

背景

我需要一个比其容器更大的图像。这个想法是让用户可以选择将全宽图像添加到内容页面,如果他们愿意的话。

问题

我将 calc(100vw)left: 50%;translateX(-50%) 一起使用。这在 Chrome 和 Firefox 中完美运行。但是IE11和Edge带来了水平滚动条。

代码

HTML

<div>
  <img />
</div>

CSS

div {
    margin: 0 auto;
    width: 400px;
}

img {
    display: block;
    left: 50%;
    position: relative;
    transform: translateX(-50%);
    width: calc(100vw);
}

Fiddle

这里有一个例子,你可以测试和玩:https://jsfiddle.net/Cthulhu/nbmy5mjf/1/

问题

如何remove/hide IE 和 Edge 的滚动条?

我认为这是由于图像位置的计算方式所致。但是,我注意到如果我从图像中删除 display: block;,Firefox 和 Chrome 也会显示滚动条。有什么想法吗?

使用

body {
  overflow: hidden
}

或者只是:

body {
  overflow-x: hidden
}

并删除 calc() 它在那里没有做任何事情。

片段

body {
  overflow: hidden
}
div {
  border: 5px solid red;
  margin: 0 auto;
  width: 400px;
}
img {
  display: block;
  left: 50%;
  position: relative;
  transform: translateX(-50%);
  width: 100vw;
  overflow: hidden
}
<div>
  <img src="http://randomrab.com/wp-content/uploads/2015/05/thumpimage.jpg" />
</div>