2011-12-09 12 views
0

私はいくつかの背景イメージでdivを作成し、それらを移動するスクリプトを持っています。他のすべてのブラウザではうまく動作しますが、クロムはあまりにも遅いです。私は自分のコードをチェックして、次のコードを削除すると、それもクロームでうまく動作することがわかります。クロムのJquery .css問題

//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要素で画像を使用します私のアニメーションのために、私はdivsが必要です。

答えて

0

あなたは明白なことをしようとしました:

$("#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タグとしてそれを追加しようとすることができ: 『URL(:

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); 
+0

私は自分のスタイルシートにバックグラウンドサイズを設定しても、これを試しました。しかし、私はdivに画像を収める必要があるので、私は背景サイズを変更する必要があります。 – Malixxl

+0

@Malixxl - Chromeヘルプフォーラムでバックグラウンドサイズや特に「カバー」に関する問題が発生しているようです。それらは主にスロースクロールに関するものと思われますが、一般的にChromeにはこの種のCSSに関するいくつかの問題があるようです。私は自分のアンカーを編集してイメージをimgタグとして追加する方法を含めました。ほとんどの場合、その要素の残りのレイアウトに少しずつ依存します。 – adeneo

+0

divに画像を配置し、main divのmarginTopをアニメーション化しました。質問を更新してjsfiddle urlを追加しました。クロムや他のブラウザで試してみましたが、クロムだけが遅れています。 – Malixxl

0

background-sizeはCSS3プロパティなので、ブラウザの速度に大きな影響を与える可能性があります。

<div>の画像を使用することをお勧めします。

+0

私は背景のサイズを削除し、私は左「背景』 + imageSrc + ")" "部分は.css関数ではまだ遅いですが、この部分を削除してスタイルシートから背景イメージを設定すると、ラグはありません。だから私はそれがバックグラウンドサイズだとは思わない。 – Malixxl

+0

CSSをスタイルシートに移動できますか? – Blender

+0

私は自分のコードをバックグラウンドの画像に変更しましたが、それは同じ問題を抱えています。私はjsfiddleリンクで質問を更新しました。クロムもそれに遅れをとった。 – Malixxl