我有一个脚本,该脚本使用一些背景图像创建div,然后将其移动,它在所有其他浏览器上运行都很好,但是chrome太慢了。我检查了我的代码,发现当我删除以下代码时,它在chrome上也很好用。

//imageCount = count of image placed for animation, this loop gets source of
//each image, create divs, then makes each image to background of a div

for(imageNum=0;imageNum<imageCount;imageNum++)
{
var imageSrc= $("#image img:eq("+imageNum+")").attr("src");

 //save image sources for later use
images.push(imageSrc);

 //creating divs
$("#main_cont").append("<div name=img"+imageNum+" class=img_cont></div>");


  //here is my problem
//when i delete .css part works great

$("#main_cont .img_cont:eq("+imageNum+")").width(tWidth).height(tHeight).css({
    backgroundImage: "url("+imageSrc+")",
    backgroundRepeat: "no-repeat",
    backgroundSize: tWidth +"px "+ tHeight +"px "

});


  //this part is not about my question, each div's position for animation
var offset = $("#main_cont .img_cont:eq("+imageNum+")").offset();

yPos.push(offset.top);
xPos.push(offset.left);

}


我在jsfiddle上的代码的简单版本:http://jsfiddle.net/uUj4h/2/(加载大图像的原因可能要花一点时间)

如果我找不到解决方案,我将在div中使用图像而不是背景,但对于动画,我需要使用div。

最佳答案

您是否尝试过显而易见的方法:

$("#main_cont .img_cont:eq("+imageNum+")").css({
    width: tWidth,
    height: tHeight,
    background: "url("+imageSrc+") no-repeat top left"
});


并在CSS中设置背景尺寸。

小提琴:http://jsfiddle.net/adeneo/6TeBk/2/

或者,您可以尝试将其作为img标签附加到元素的开头:

var imageSrc = new Image();
    imageSrc.src = $("#image img:eq("+imageNum+")").attr("src");
    imageSrc.width = tWidth;
    imageSrc.height = tHeight;

$("#main_cont .img_cont:eq("+imageNum+")").css({ width: tWidth, height: tHeight}).append(imageSrc);

关于jquery - Chrome上的jQuery .css问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8449822/

10-12 12:55