javascript - 如果图像已经开始加载,显示 div

标签 javascript jquery html css image

<分区>

我相信,下面的代码会等到图像完全加载完毕:

$('.some-img').load(function(){
    $('.img-container').show();
});

然而,我想要的是等到图像开始加载并根据图像的高度调整图像容器的高度。

容器的高度是响应式的 height: auto 并且图像有不同的高度,所以容器开始时没有高度(只有 20px 填充),然后根据里面的图像,每次加载时都会有点刺耳。

有什么方法可以检查图像是否已开始加载,以便我可以调整图像容器的高度,然后执行$('.imagemodal-container')。 show(),因为等待整个图像加载不是好的用户体验。

最佳答案

使用 this answer 中的 getImageSize 函数:

function getImageSize(img, callback) {
      var $img = $(img);

      var wait = setInterval(function() {
          var w = $img[0].naturalWidth,
              h = $img[0].naturalHeight;
          if (w && h) {
              clearInterval(wait);
              callback.apply(this, [w, h]);
          }
      }, 30);
}

由于大于 img wrapper 宽度 (600px) 的图像会按比例缩小以适合,我必须根据比例调整高度,并且还要考虑 20px + 20px 顶部和底部的恒定填充:

getImageSize($('.showcase-img'), function(width, height) {
    width > 600 ? calculatedHeight = 600/width * height + 40 : calculatedHeight = height + 40;
    $('.showcase-img-wrapper').css("height", calculatedHeight+"px");
    $('.imagemodal-container').show();
});

关于javascript - 如果图像已经开始加载,显示 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115968/

相关文章:

javascript - 折叠 DataTable 中的表头破坏了我的表格格式

javascript - 遍历表中的选择框 jQuery

html - 为什么这个简单的列表项负文本缩进在除 IE8 之外的所有浏览器中都有效?

javascript - 停止在 Url 重定向 android 上加载网页

javascript - 在 document.getElementById ('' ).innerHTML = 之后放置链接

javascript - 使用 html 将新的 li html 附加到页面时无法准确获取 li 标签的高度

html - 笨重的 Bootstrap 旋转木马

javascript - 在 jQuery 中获取全局样式表的值

javascript - 确定 JavaScript 字符串中的所有 ISO 15924 脚本代码

html - 滚动具有固定位置和指定顶部属性的内容会删除最后一部分