在图像加载时保持div高度

Sbb*_*bbs 21 css image twitter-bootstrap twitter-bootstrap-3

我有一个方形图像.img-container.有时,图像加载和.img-container折叠需要几秒钟,并且只有在图像加载时才占据整个高度.但是,我想在图像加载时保持整个高度(就好像图像在那里).

我会通过设置已经很容易地做到了这一点min-heightimg-container一流的,但它是一个流体网格,图像响应(注意引导的img-responsive辅助类),这使得它很难设定的最小高度为不同屏幕尺寸合适的值(虽然实现以媒体查询为最后手段).通过放置一个占位图像解决这个问题听起来像是一种矫枉过正(尤其是在移动设备上的性能).此外,不确定首先加载什么,占位符图像或实际图像.

<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4">
    <div class="card">
      <span class="img-container thumbnail clearfix">
        <img alt class="pull-left img-responsive" src="http://...">
      </span>
      <div class="caption">
        <a href="http://.." class="card-title lead">
          Some text
        </a>
      </div>
    </div>
  </div>
Run Code Online (Sandbox Code Playgroud)

skr*_*orn 19

编辑由于评论

如果您根本没有指定源(甚至不是虚拟的,临时的),浏览器甚至不会尝试"猜测"图像的高度,因此它会崩溃.如果您知道图像的比例(在方形图片的情况下显然是1:1),您可以使用以下技巧来占用空间,并将图像与div一起缩放.

设置以下CSS:

.test-div-inner {
    padding-bottom:100%;
    background:#EEE;
    height:0;
    position:relative;
}
.test-image {
    width:100%;
    height:100%;
    display:block;
    position:absolute;
}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下HTML:

<div class="test-div-inner">
    <img class="test-image" src="http://goo.gl/lO9SUU">
</div>
Run Code Online (Sandbox Code Playgroud)

以下是工作示例:http://jsfiddle.net/pQ5zh/3/

请注意,小提琴包含另一个div元素,只有在您想要全部填充或填充时才需要这个元素,因为padding-bottom根据包含这些div 参数的宽度计算填充(以像素为单位),这不是我们想要的效果实现(图像会比它应该高一点).

对于非方形图像:

如果您想更改图片的比例,只需相应更改padding-bottom容器div.例如,如果要放置比例为2:1的图像,请将填充更改为50%.为了保持简洁:容器div的宽度和填充的比率应始终等于图像的宽度和高度的比率.


有一种简单的方法可以做到这一点,但它只适用于方形图像.
指定图像的宽度(使用CSS)为100%.这样浏览器将自动假设图像高度与其宽度相同,并占据该位置.

http://jsfiddle.net/pQ5zh/2/

.test-image {
    width:100%;
}
Run Code Online (Sandbox Code Playgroud)

注意:有一种方法可以实现非方形图像,但这有点复杂.

编辑:见上文.

  • 我修改了我的答案来解决这个问题,并为非方形图像提供了解决方案. (2认同)