为什么 height:auto 有时是 0

What`s the reason that height:auto sometimes it`s 0

#banner {
background: url(http://www.lazarangelov.com/wp-content/uploads/2015/12/lazar1-1920.jpg) no-repeat center center/contain;
  height: auto;
  max-width: 100%;
 
<div id="banner"></div>

img {
  height: auto;
  max-width: 100%;}
 
<img src="http://www.lazarangelov.com/wp-content/uploads/2015/12/lazar1-1920.jpg" alt="">

我 运行 总是遇到响应图像的问题,但我没有找到澄清问题的答案。

图像有问题

image {
  height:auto;
  width:100%;
}

当我添加一个简单的图像并为其设置样式时,它起作用了。当我开始一个包含很多 div 的更复杂的项目时,我设置相同的属性不再起作用。对此最纯粹的解释是什么。

这是因为当您直接将<img>添加到html时,浏览器会将元素的高度设置为您提供的图像的高度(除非另有说明)。当您将图像添加为 <div> 的背景并将高度设置为自动时,它会尝试将 div 的大小调整为内容的高度。但是,在这种情况下,没有内容——只有一个背景,一旦 div 具有一定的高度,它就会成为背景。空 div 没有高度。因此,如果您希望图像作为<div>的背景,它必须包含一些内容,或者手动设置其高度。