css3アニメーションを使用して、画面の片側から反対側にアイテムを移動しています。画面の解像度に関係なく、この効果が機能することを確認したいと思います。これを行うためにdocument.styleSheets
、すべてのアニメーションキーフレームを含むcssファイルにアクセスし、それらの最終値を変更するために使用します。
これが私が使用しているjsコードです:
var stylesheet = document.styleSheets[1];
var rules = stylesheet.rules;
var keyframes;
var keyframe;
for (var i = 0; i < rules.length; i++){
keyframes = rules.item(i);
var keyframeRules = keyframes.cssRules;
var j = keyframeRules.length;
var index = i+1;
while (j--) {
keyframe = keyframeRules.item(j);
if (keyframe.keyText === "100%") {
if(keyframe.style.left != ''){
keyframe.style.left = $(document).width() + $('#cloud'+ index).width() + 'px';
}
}
}
$('#cloud'+ index).addClass('animating');
}
私が使用しているcssファイルには次のものが含まれています。
@-moz-keyframes cloud1 {
0%{ left: -400px; }
100%{ left: 0; }
}
@-webkit-keyframes cloud1 {
0%{ left: -400px; }
100%{ left: 0; }
}
そこにはかなりの数のキーフレームのペアがあります。
私の問題は、firebugで検査するとdocument.styleSheets
、空のcssファイルが返されるconsole.log
ことです。結果として、rules.length
はnullになります。Webkitベースのブラウザは問題なく動作します。
ここで明らかな何かが欠けていますか?