2012-08-23 1 views
2

멀티 브라우저 CSS가 필요한 동적 그래디언트를 추가하고 있습니다. 그것은 하나의 브라우저에서 지시하고 CSS 파일로 작성된 경우에도 작동하지만 jquery에서 .css() 메소드를 사용하면 배경을로드하지 못합니다. 하나의 '배경'을 사용하는 동안 모든 브라우저 CSS를 추가 할 때 작동하지 않습니다 내 코드의 예입니다 제가 여기서 뭘하려고 오전의 아이디어 ...jQuery.css() 메소드의 모든 브라우저에서 CSS를 코딩하는 방법은 무엇입니까?

if ($jj(this).scrollTop() > 200 && $el.css('position') != 'fixed'){ 
      $jj('.fixedElement').css({ 
       'position': 'fixed', 'top': '0px', 'z-index': '9999', 
       'width': '120%','paddingRight': '20%', 'paddingLeft': '20%', 
       'marginLeft': '-10%', 'left': '0', 'boxShadow': '0 3px 5px #888888', 
       'lineHeight': '100%', 
       'background': '#00172A', 
       'background': '-moz-linear-gradient(top, #00172A 80%, #2F71B3 100%)', 
       'background': '-o-linear-gradient(top, #00172A 80%, #2F71B3 100%)', 
       'background': '-webkit-gradient(linear, left top, left bottom, color-stop(80%,#00172A), color-stop(100%,#2F71B3))', 
       'background': '-webkit-linear-gradient(top, #00172A 80%, #2F71B3 100%)', 
       'background': '-ms-linear-gradient(top, #00172A 80%, #2F71B3 100%)', 
       'filter': 'progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#00172A\', endColorstr=\'#2F71B3\',GradientType=0)', 
       'background': 'linear-gradient(top, #00172A 80%, #2F71B3 100%)', 
       'color': '#ffffff' 
      }); 

를 얻으려면가에서 작동 전화 당신은 코드를 찾을 수있는이 파이어 폭스에서 작동 예를 들어 브라우저 선택 ...

if ($jj(this).scrollTop() > 200 && $el.css('position') != 'fixed'){ 
      $jj('.fixedElement').css({ 
       'position': 'fixed', 'top': '0px', 'z-index': '9999', 
       'width': '120%','paddingRight': '20%', 'paddingLeft': '20%', 
       'marginLeft': '-10%', 'left': '0', 'boxShadow': '0 3px 5px #888888', 
       'lineHeight': '100%', 
       'background': '-moz-linear-gradient(top, #00172A 80%, #2F71B3 100%)', 
       'color': '#ffffff' 
      }); 

http://www.thediabetesnetwork.com에 살고 있습니다. 수정 : json 개체에서 CSS를 제거하고 jquery API를 사용하여 수정. 호출이 json 대괄호로 싸여 있고 json 구문을 사용하는 방법에 주목하십시오. 이것이 문제였습니다. 이제는 이렇게 보입니다.

if ($jj(this).scrollTop() > 200 && $el.css('position') != 'fixed'){ 
      $jj('.fixedElement').css('background', 'linear-gradient(top, #00172A 80%, #2F71B3 100%)'); 
      $jj('.fixedElement').css('background', '-ms-linear-gradient(top, #00172A 80%, #2F71B3 100%)'); 
      $jj('.fixedElement').css('background', '-moz-linear-gradient(top, #00172A 80%, #2F71B3 100%)'); 
      $jj('.fixedElement').css('background', '-o-linear-gradient(top, #00172A 80%, #2F71B3 100%)'); 
      $jj('.fixedElement').css('background', '-webkit-linear-gradient(top, #00172A 80%, #2F71B3 100%)'); 
      $jj('.fixedElement').css('background', '-webkit-gradient(linear, left top, left bottom, color-stop(80% #00172A), color-stop(100%,#2F71B3))'); 
      $jj('.fixedElement').css(
       { 
       'position': 'fixed', 
       'top': '0', 
       'z-index': '9999', 
       'width': '120%', 
       'paddingRight': '20%', 
       'paddingLeft': '20%', 
       'marginLeft': '-10%', 
       'left': '0', 
       'boxShadow': '0 3px 5px #888888', 
       'lineHeight': '100%', 
       'paddingTop': '0', 
       'paddingBottom': '0', 
       'color': '#ffffff' 
      }); 
+2

jQuery를의 CSS-파이 polyfill의 질문을 제기 않습니다 그러나

.... : http://stackoverflow.com/questions/5735521/jquery-css-gradient – Krycke

답변

3

는 여기를 참조하십시오 : http://blog.jquery.com/2012/08/09/jquery-1-8-released/ 당신이 할 필요가 linear-gradient를 사용하여 jQuery를 자동으로 나머지 polyfill 것이다.

구형 IE에서 그래디언트 지원을 위해 CSS Pie을 설치하는 것을 잊지 마십시오. 당신은이 질문을 확인해야

+0

- 질문 하단을보십시오. 귀하의 답변이이 사이트에서 허용 된 다른 사이트에 유용하다는 사실을 발견했습니다. 하지만, 그 대답은 jQuery 내에서 JSON 객체를 사용함에있었습니다. 나는 jQuery API를 사용하기 위해 그것을 다시 작성했다. jReviews 때문에 jQuery 1.7.2를 고수해야했기 때문에이 사이트에서 1.8의 새로운 기능을 사용할 수 없었습니다. 어쩌면 JSON에 대한 자세한 내용은 익숙하지 않지만 필자의 시도에서는 사실이 아닙니다. – Shane

+0

@Shane 물론! 모든 배경 요소가 위의 요소를 덮어 쓰도록 한 번에 모든 요소를 ​​설정하면 jQuery와 아무런 관련이 없습니다. javascript에서는 여러 요소가 모두 동일한 이름을 가진 객체를 만드는 것이 불가능합니다. – Ariel

+0

하지만 JSON 양식의 한 요소만으로는 선형 그래디언트를 사용하지 않았을 것입니다. (그리고 테스트도하지 않았습니다.) 제 질문이있었습니다. 다른 사람들이 jQuery가 아니기 때문에 다른 사람이 jQuery가 아니기 때문에 그 점을 지적했다. 따라서 1.8에 API를 사용하지는 않았다. 지금 가지고있는 코드는 여러 브라우저에서 작동하며 위의 코드를 덮어 쓰지 않는 것 같습니다 (브라우저 선택에 따라) 작동하지 않는 코드를 간과합니다. 다른 일이 일어나고 있다고 느낄 경우 어떤 조언이나 의견이든 열려 있습니다. – Shane

관련 문제