2014-04-03 3 views
4

SVGFragmentIdentifiers와 함께 SVG 스프라이트를 사용하고 있습니다. 같은 : 물론SVGFragmentIdentifier에 대한 브라우저 지원 검색

<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> 
<defs> 
    <style><![CDATA[ 
     .sprite { display: none; } 
     .sprite:target { display: inline; } 
    ]]></style> 
</defs> 
<g class="sprite" id="icon1">...</g> 
<g class="sprite" id="icon2">...</g> 
<g class="sprite" id="icon3">...</g> 
</svg> 

나는 CSS 배경 등을 통해 SVG 파일을 사용하고 있습니다 :

.icon1 { 
    background-image: url(mysprite.svg#icon1); 
    background-size: contain; 
} 

불행하게도 SVG 조각 식별자가이 시간에 웹킷과 다른 브라우저에서 지원되지 않습니다 http://caniuse.com/svg-fragment

Modernizr을 사용하여 브라우저 기능을 확인하고 있습니다. SVGFragmentIdentifiers에 대해 Modernizr 또는 독립적 인 JavaScript Browsercheck를 만들 수 있습니까?

jQuery를 통해 SVG 객체를 만들고 그것에 대해 :target 이벤트를 트리거하는 것에 대해 생각했습니다. 나중에 그것이 숨겨 지거나 보여지는지를 점검 할 것입니다. 어쩌면 jQuery의 event.target이 도움이 될 수 있습니다. 그러나 그것이 인라인 SVG의 문제 일 것이기 때문에 이것이 배경 이미지에 적합한 지 확실하지 않습니다.

아이디어가 있으십니까?

+0

브라우저가 가치있는 일이라면 브라우저는 이와 같은 조각 식별자를 지원한다고 생각하지 않습니다. 참조 : http://stackoverflow.com/questions/16042387/svg-spritesheet-targeting-with-css – cimmanon

답변

0

나는 (View이 조각 식별자에 대한 지원을 확인 할 수있는 권리이다 만약 내가 혼란 스러워요) 당신이 방법을 다음과 같은 시도 할 수 있습니다 생각 : 다양한 브라우저에서

function supportsSvgView() { 
    return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#View", "1.1"); 
} 

확인 this fiddle을. Read more here 및 (1.1)에 대한 all feature strings을 확인하십시오.

+1

신뢰할 수있는 방법이라고 생각하지 않습니다. 최근에 hasFeature 메소드가 항상 "true"를 반환하도록하는 방법에 대한 이야기가 있습니다.이 스레드는 http://lists.w3.org/Archives/Public/www-svg/2014Jan/0042.html에서 볼 수 있습니다. –

+0

hasFeature는 svg 기능을 제외하고 항상 true를 반환하므로 답변이 정확해야합니다. https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature – ChaosClown

+0

http : // www. – ChaosClown