通过css获得按百分比缩放的图像尺寸

时间:2011-11-21 10:45:22

标签: jquery css image-size

我正在尝试获取使用css使用百分比值缩放的图像元素的尺寸(宽度)。

以下是代码:

<div id="wrapper">
                    <ul id="gallery_content">
                        <li><img src="images/thumbs/1.jpg"/></li>
                        <li><img src="images/thumbs/2.jpg"/></li>
                        <li><img src="images/thumbs/3.jpg"/></li>
                        <li><img src="images/thumbs/4.jpg"/></li>
                        <li><img src="images/thumbs/5.jpg"/></li>
                        <li><img src="images/thumbs/6.jpg"/></li>
                        <li><img src="images/thumbs/7.jpg"/></li>
                        <li><img src="images/thumbs/8.jpg"/></li>
                        <li><img src="images/thumbs/9.jpg"/></li>
                        <li><img src="images/thumbs/2.jpg"/></li>
                        <li><img src="images/thumbs/3.jpg"/></li>
                        <li><img src="images/thumbs/4.jpg"/></li>
                        <li><img src="images/thumbs/5.jpg"/></li>
                        <li><img src="images/thumbs/6.jpg"/></li>
                        <li><img src="images/thumbs/7.jpg"/></li>
                        <li><img src="images/thumbs/8.jpg"/></li>
                        <li><img src="images/thumbs/9.jpg"/></li>
                        <li><img src="images/thumbs/2.jpg"/></li>
                        <li><img src="images/thumbs/3.jpg"/></li>
        </ul>
    </div>

这里是css:

ul#gallery_content li{ background:#FFF; list-style:none; display:inline; float:left; margin:0; height: 100%;}
ul#gallery_content li img { width:auto; height:100%; width:auto; }

我正在尝试获取包装器元素的实际宽度(所有图像宽度的总和)。 在

中访问它们时
$(document).ready(
    galItems = $('#gallery_content').children().children();
    galSize = 0;
    $.each(galItems, function(index, item){
        galSize += parseInt(item.width)
    });     
)

它获取所有图像元素但未获得计算的宽度。 有没有机会用jquery获取图像的实际渲染宽度?

2 个答案:

答案 0 :(得分:0)

您是否尝试过将.width()作为函数?

http://api.jquery.com/width/

galSize += parseInt(item.width());

问题解决后编辑:

事实证明问题实际上是在页面之前执行了javascript并且图像已经完全加载。

通过将$(document).ready()更改为$(window).load()来解决这个问题。

答案 1 :(得分:0)

ready()事件上你应该传递一个函数,所以将代码包装在一个函数中,如下所示:

$(document).ready(function(){
    var galItems = $('#gallery_content').children().children();
    var galSize = 0;
    $.each(galItems, function(index, item){
        galSize += +(item.width)
    });
});

使用+符号代替parseInt将字符串转换为数字,速度更快。