【问题标题】:Jquery .css issue on chromechrome上的Jquery .css问题
【发布时间】:2012-01-17 00:01:40
【问题描述】:

我有一个脚本可以创建带有一些背景图像的 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。

【问题讨论】:

    标签: jquery css google-chrome animation html


    【解决方案1】:

    background-size 是一个 CSS3 属性,因此它可能会对浏览器的速度产生更大的影响。

    我可能会建议使用 &lt;div&gt; 中的图像以提高速度。

    【讨论】:

    • 我删除了背景大小,我只在 .css 函数中留下了 "background: "url("+imageSrc+")"" 部分它仍然滞后,但是如果我删除这部分并从样式中设置背景图像表,没有滞后。所以我认为这与背景大小无关。
    • 那你能把 CSS 移到样式表吗?
    • 我将我的代码更改为背景中的 div 中的图像,它仍然存在同样的问题,我用 jsfiddle 链接更新了我的问题,你可以在那里看到我的代码的简单版本。 Chrome 在这方面也有所滞后。
    【解决方案2】:

    你有没有尝试过显而易见的:

    $("#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);
    

    【讨论】:

    • 我试过这个,即使我在样式表中设置了背景大小,它仍然会导致延迟,如果不设置任何背景大小它效果很好。但我需要使图像适合 div,所以我需要更改背景大小。
    • @Malixxl - Chrome 帮助论坛上的背景大小,尤其是“封面”似乎存在一些问题。似乎这些主要是关于慢速滚动,但总的来说,Chrome 似乎对这种 css 有一些问题。我编辑了我的答案以包含一种将图像附加为 img 标签的方法,这在大多数情况下应该可以工作,这取决于该元素其余部分的布局。
    • 我已将图像放在 div 中并为主 div 的 marginTop 设置动画,我更新了我的问题并添加了 jsfiddle url,在 chrome 和其他浏览器上尝试,只有 chrome 有延迟,我认为它可能是关于镀铬和大图片显示。
    • 用 Firefox 和 Chrome 测试过,我看不出问题。当然,动画在 FF 中更流畅一些,而且由于 FF 缓存图像的方式不同,它在第二次刷新时加载速度更快,但这只是浏览器不一致,无法真正从您的最终解决,我担心您必须忍受它或将您的代码完全更改为其他东西。 FIY我创建了一个带有CSS动画的版本,它几乎完全一样,你可以看到它HERE -
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 2014-01-21
    • 2013-01-19
    • 2011-02-09
    • 2011-11-08
    • 2023-03-26
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多