图像高度始终返回为0

Image height always returned as 0

本文关键字:返回 高度 图像      更新时间:2023-09-26

我正试图遵循这个SO关于如何对图像进行着色的答案,但当我这样做时,$("#myselector").height();一直返回为0。我做错了什么?这是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Test</title>
    <link rel="stylesheet" href="style.css">
    <!--[if IE]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
</head>
<script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function() {
  overlay = $("#overlay");
img = $("#myimg");
overlay.width($("#myimg").width());
alert($("#myimg").height());
overlay.height("100");
overlay.css("top", img.offset().top + "px");
overlay.css("left", img.offset().left + "px");
});

</script>
<body id="home">
<div id="overlay" class="overlay"></div>
<img id="myimg" src="building.png" />
</body>
</html>

我的最佳猜测是图像尚未加载。

您的脚本运行onready。如果你把它改成onload,你可能会得到更好的结果。

更改

$(document).ready(function() {

$(window).load(function() {

更多:window.onload vs$(document).ready()

使用图像的load事件:

$(document).ready(function() {
  overlay = $("#overlay");
  img = $("#myimg");
  img.load( function(){
    overlay.width($("#myimg").width());
    alert($("#myimg").height());
    overlay.height("100");
    overlay.css("top", img.offset().top + "px");
    overlay.css("left", img.offset().left + "px");
  });
});

替换:

$(document).ready(function() {

上:

$(window).load(function() {