0

こんにちは、Google+ スタイルの写真アルバムを作ろうとしています。私はかなり成功しています。しかし、奇妙なことに、Chrome ではコードの実行速度が遅くなりますが、Firefox では非常にうまく機能します。Chrome では、写真の読み込みが非常に遅く、アルバム画像 (jquery 部分) の回転が遅いです。これが私のコードです...

<?php
 $number_of_image_per_album=array(); 
 $query="SELECT album_id,album_name from albums WHERE user_id='18'";//user id
 $result=mysql_query($query);
 $num_of_album=mysql_num_rows($result);
 for($i=1,$k=0;$k<=800,$i<=$num_of_album;$k=$k+300,$i++)
   {
$array=mysql_fetch_assoc($result);
$album_id=$array['album_id'];
$album_name=$array['album_name'];
$query2="SELECT image_id,ext from images WHERE album_id='$album_id'";
$result2=mysql_query($query2);
$num_of_images=mysql_num_rows($result2);
$num_of_image_per_album[]=$num_of_images;
echo "<div class='image_stack' style='margin-left:",$k,"px'>";//create a album of images
$left=108;
$top=8;
for($j=1;$j<=$num_of_images;$j++)
{
    $array2=mysql_fetch_assoc($result2);
    $image_id=$array2['image_id'];
    $image_ext=$array2['ext'];
    $image_name=$array2['image_name'];
    //$str="<img id='photo.$j' class='stackphotos' src='uploads/.$album_id./.$image_id.$image_ext' />";

    echo "<img id='photo$j' class='stackphotos' style='left: $left; top:$top ;' src='uploads/$album_id/$image_id.$image_ext' />";   

    $left=108-4;
    $top=8-2;
}   
 echo "</div>";
}
?>

ここに私のjqueryの部分があります...

<script>
$(document).ready(function() {
$('.image_stack').delegate('img', 'mouseenter', function() {//when user hover mouse on image with div id=stackphotos
        //if ($(this).hasClass('stackphotos')) {//
        // the class stackphotos is not really defined in css , it is only assigned to each images in the photo stack to trigger the mouseover effect on  these photos only
        var parent = $(this).parent();
        var index=parent.index()-1;
        var num_of_image_per_album=<?php echo json_encode($num_of_image_per_album);?>;
        var num_of_image_for_specific_album=num_of_image_per_album[index];
      //  alert( num_of_image_for_specific_album);
        var i=0;
        var degree=0;
        for(i=1;i<=num_of_image_for_specific_album;i++)
        {

            parent.find('img#photo'+i).css({'-webkit-transform': 'rotate(' + degree + 'deg)'});
            parent.find('img#photo'+i).css({ '-moz-transform': 'rotate(' + degree + 'deg)'});
             degree=degree+10

            }

})
.delegate('img', 'mouseleave', function() {// when user removes cursor from the image stack
var parent = $(this).parent();
var index=parent.index()-1;
var num_of_image_per_album=<?php echo json_encode($num_of_image_per_album);?>;
var num_of_image_for_specific_album=num_of_image_per_album[index];

 for(i=1;i<=num_of_image_for_specific_album;i++)
    {

     parent.find('img#photo'+i).css( {'-webkit-transform':''});
        parent.find('img#photo'+i).css({ '-moz-transform': ''});


        }


});;
});
</script>

Chrome の 16.0.912.77 バージョンを使用しています。これも safari で遅いです。何が問題なのか教えてください。よろしくお願いします.......

4

1 に答える 1

0

Chrome の超クールなプロファイラーをチェックアウトしましたか?

Right click page -> Inspect Element (or F12)
 -> Profiles 
 -> collect JavaScript CPU Profile
 -> Start
 -> Stop
 -> Read
 -> Fix Problems
 -> Repeat
于 2012-09-21T19:18:12.647 に答える