在图像加载到HTML中之前获取图像高度
我有一个使用DIV动态创建的表。表格的每一行都有两个图像。我想将div(代表特定行)的高度设置为该特定行中显示的两个图像中较大的图像高度。要显示的图像将始终更改,并且它们来自外部服务器。
如何设置div的高度,以便适合图像?
解决方案
将它们预先加载到javascript图像对象中,然后仅引用其高度和宽度。
可能需要一些巧妙的技巧才能在所有浏览器中使用...
function getSize(imgSrc){ var aImg = new Image(); aImg.src = imgSrc; aHeight = newImg.height; aWidth = newImg.width; }
你可以:
- 不指定div的高度,而是让它自动扩展
- 加载图像后,请执行以下操作:document.getElementById(" myDiv")。height = document.getElementById(" myImage")。height
我们需要更多信息才能非常有用。我们可以在页面加载后通过Javascript(信息)获取图片的高度和宽度,然后可以在加载后调整div的高度。否则,我们真的很不幸,因为HTML本身没有任何东西。
如果我们使用的是PHP,则有getimagesize(),如果我们使用PHP动态构建网站,则可以使用它。其他语言也有类似的功能,但我们需要更多信息。
如果我们要动态调整表格中一行中的几个div的大小,最好使用html表格而不是将每个图像放在td标签中。这将使tr标签的大小相应地针对每个单元格中的图像进行调整。
如果要让浏览器根据图像的高度进行布局,则在获取图像之前,需要将该高度发送到浏览器的某个位置。这将需要服务器端的东西。最快的方法是直接插入html中。较慢但更优雅的方法是使用<script src =>语句逐个图像地获取它,该语句从生成javascript的特殊cgi中获取指令。 (速度差来自网络往返。)
如果我们愿意在数据到达后调整大小,则要简单得多。或者在图像上拍上一个加载处理程序,或者将其粘贴在普通dom(例如,实际表中,尽管我们可以使用div和css进行操作),然后让布局引擎完成工作。
已经以多种方式回答了这个问题,我们还问了另一个问题"这会使UI看起来不好吗?"
这个问题的答案是肯定的。在大多数情况下,我们要做的最好的事情是将div的高度设置为看起来不错的高度,然后将图像缩小到合适的大小。这将使渲染速度更快,并且最终产品将看起来更好,更专业。
但是,那只是我自己的看法。我没有经验数据来支持这一点。