2014-01-21 3 views
1

브라우저가 CSS @supports 기능을 지원하는지 어떻게 알 수 있습니까? Internet Explorer와 Safari는이 기능을 지원하지 않기 때문에 웹 응용 프로그램은 해당 브라우저에 적용 할 스타일을 알지 못합니다. 순수 CSS를 사용@supports에 대한 기능 감지?

+0

무엇에 대한 모더 나이저? –

+0

그건 틀림 없습니다, 맞습니까? 가능하다면 가능한 한 프레임 워크에서 멀리하고 싶습니다. – Azrael

+0

아니요 ... 기능 감지 JS - http://modernizr.com/ –

답변

1

, 당신은 종류의 브라우저가 같은 color 선언으로, 보편적으로 지원 선언과 함께 @supports 규칙을 만들고, 전 세계적으로 선언 같은 또 다른 규칙을 재정 의하여 @supports을 이해하고 있는지 여부를 확인하기 위해 캐스케이드에 의존 할 수 :

#test { 
    color: red; 
} 

@supports (color: green) { 
    #test { 
     color: green; 
    } 
} 

In any browser that implements @supports correctly, #test should have green text. Otherwise, it'll have red text.

는 순수 CSS 방법에 대한 자세한 설명은 this question에 대한 내 대답을 참조하십시오. 당신이 자바 스크립트를 사용하여 감지 할 찾고 있다면 코멘트에서 언급 한 바와 같이

, 당신은 Modernizr 기능 감지 라이브러리를 사용할 수 있습니다 (다운로드의 설정에서 CSS-지원을 포함해야합니다) :

if (Modernizr.supports) { 
    console.log('Your browser supports @supports.'); 
} else { 
    console.log('Your browser does not support @supports.'); 
} 
+0

순수 CSS 솔루션이 내가 원하는 해결책 일 수 있습니다. 현재 유사한 기능을 사용하고 있지만 무시 기능을 인식하지 못했습니다. – Azrael

+0

순수 CSS 솔루션을 사용하면 이전에 @supports 블록에 스타일 규칙을 표시 한 브라우저에서도 기본 스타일 규칙이 적용됩니다. 편집 : 지원 블록이 미디어 블록 내에 있다면 중요합니까? – Azrael

+0

@Ilitis : 중요하지 않아야합니다.이 경우'@support' 블록은'@media' 블록에도 적용되어야합니다. 지원되지 않는 브라우저에서 기본 스타일을 제외해야하는 경우 대신 '@support' 블록으로 이동하십시오. 반면에 * 지원 * 브라우저에서 기본 스타일을 제외해야하는 경우 해당 스타일을 다시 정의해야합니다. 이는 재정의에 의존하는 단점입니다. – BoltClock

관련 문제