【问题标题】:Get the Height of an Image获取图像的高度
【发布时间】:2015-10-29 02:19:34
【问题描述】:

这应该很容易,但事实并非如此。我只需要图像的高度:

<div id="map">
    <img src="myimage.jpg">
</div>
$("#map img").height(); // returns 0

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

问题是高度或宽度还没计算,用.on( "load", handler )监听加载图片

$("#map img").on("load", function(){
  var height = $(this).height();
  $('#output').html('height=' + height);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div id="map">
    <img src="http://placehold.it/400x40">
</div>
<div id="output"></div>

【讨论】:

  • 可能是真的,但大约半小时前已经在 cmets 上发布了。顺便说一句,像这样使用的load() 已经被弃用了一段时间。这是正确的链接:api.jquery.com/load-event.
  • 似乎从 1.8 开始,你是对的。但是用.on( "load", handler )代替应该没问题吧?
  • 基本上是的,但我认为还有更多。如果图像已被缓存,则加载事件不会触发 - 在这种情况下高度计算也不会触发。因此,更广泛的方法可能是监听window onload 事件(这将始终是正确的)或使用.complete 预先进行检查,这是已加载图像的指示器。但是,如果一个人想节省一些时间并且可能会使事情变得过于复杂,那么最后一点就是需要的。在 cmets 中被赞成的链接中接受的答案也没有真正正确地对待这个问题。
  • 啊,是的,窗口加载事件在这种情况下更好。 :)
  • 我使用了window onload,但还是不行。所有图像都以 0 高度返回。一定是因为它们被缓存了?
【解决方案2】:

使用.clientHeight(纯JavaScript):

https://jsfiddle.net/ryanpcmcquen/v6yz8t3u/

console.log(document.querySelector('img').clientHeight);
&lt;img src="//makelin.us/100/100" /&gt;

在此处阅读:https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight

请注意,这将为您提供图像在页面上显示时的高度,它可能会受到 CSS 的影响。

注意:要获取图片的实际高度,请使用.naturalHeight
这里有很棒的文章: https://davidwalsh.name/get-image-dimensions

要确保在加载图像后运行,请执行以下操作:

window.addEventListener('load', function () {
  console.log(document.querySelector('img').clientHeight);
});

【讨论】:

  • 考虑阅读这个答案-stackoverflow.com/a/623174/3681882根据你的说法,这会返回实际图像高度还是渲染高度?
  • @CrakC,感谢您的 ping。这是渲染的高度,我也添加了.naturalHeight
  • 问题是图片尺寸还没有加载,看下面我的回答。
  • 添加了负载监听器(虽然 JS 应该在 &lt;body&gt; 的末尾附近)。
【解决方案3】:

您可以参考以下示例来获取图像的高度-

<div id="map">
    <img id="img_id" src="http://www.clickerzoneuk.co.uk/cz/wp-content/uploads/2010/10/PuppySmall.jpg" >
</div>

在js文件中编写如下代码

var height = document.getElementById("img_id").clientHeight;

alert(height);

使用以下链接检查示例-

http://jsfiddle.net/v60mut3L/1/

【讨论】:

【解决方案4】:

这对我有用:

$(window).load(function () {

    var artLists = [];
    $("ul.articles").each(function (index) {
        var imageHts = [];
        $("li img", $(this)).each(function () {
            imageHts.push($(this)[0].height);
        })
        artLists.push(imageHts);
    })

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多