2012-09-14 3 views
2

css3 애니메이션을 사용하여 항목을 화면의 한쪽에서 다른쪽으로 이동합니다. 이 효과가 화면 해상도에 관계없이 작동하는지 확인하고 싶습니다. 이를 수행하기 위해 모든 애니메이션 키 프레임이 포함 된 CSS 파일에 액세스하고 최종 값을 변경하기 위해 document.styleSheets을 사용합니다.document.styleSheets returns nothing

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 파일이 포함되어 있습니다 : 여기

내가 사용하고있는 JS 코드

@-moz-keyframes cloud1 { 
0%{ left: -400px; } 
100%{ left: 0; } 
} 

@-webkit-keyframes cloud1 { 
0%{ left: -400px; } 
100%{ left: 0; } 
} 

내가 거기에 키 프레임의 꽤 많은 쌍을 가지고있다.

내 문제는 document.styleSheetsconsole.log 인 경우 빈 css 파일을 반환하고 방화범을 끄며 검사합니다. 따라서 rules.length은 null입니다. 웹킷 기반 브라우저는 문제없이 작동합니다.

내가 여기에 뭔가 분명한 것을 놓치고 있습니까?

+0

파이어 폭스에서는 .cssRules가 작동하고 .rules은 그렇지 않습니다. 이 시도. 또한 'var stylesheet = document.styleSheets;'를 시도한 다음 특정 색인을 사용하여 스타일 시트 변수에 액세스하십시오. – Shahar

+0

두 번째 부분은 반으로 작동하는 것 같습니다. 그것은 나에게 두 개의 CSS 파일을 제공하지만 인덱스를 사용하여 두 번째 CSS 파일에 액세스하려고하면 다시 나에게 아무것도주지 않는다. 다음은'console.log (document.styleSheets)'- firefox이 제공하는 스크린 샷입니다. - http://i.stack.imgur.com/c8Omc.png – boz

+0

스펙에 따르면이 속성은'cssRules'라고합니다. –

답변

2

다른 브라우저는 다른 이름을 사용하여 해당 규칙을 나타냅니다.

var cssRules = stylesheet.rules; // chrome, IE 
if (!cssRules) cssRules = stylesheet.cssRules; // firefox (and maybe Chrome too in recent versions) 

당신은 그것을 할 수 있습니다 : 여기

내가 내 코드에서이 문제를 처리하는 방법

var cssRules = stylesheet.rules || stylesheet.cssRules; 

그러나 명확입니다 나는 첫 번째 버전을 선호합니다.

+0

제 문제는'stylesheet'가 비어있는 것 같습니다. 인덱스없이'document.styleSheets'를 실행하면 http://i.stack.imgur.com/c8Omc.png가 나오지만 인덱스를 사용하여'animation.css'를 얻으려고하면 바로 다시 아무것도 얻지 마라. – boz

+0

'document.styleSheets [1] .cssRules'는'document.styleSheets [1]'이 아무것도주지 않는다고해도 아주 예상치 못한 결과를줍니다. – boz

+0

브라우저가 아닌 Firebug 문제가 아닌가? –