2014-01-21 5 views
1

Как определить, поддерживает ли браузер функцию CSS @supports? Поскольку Internet Explorer и Safari не поддерживают его, мое веб-приложение не знает, какие стили применяются в этих браузерах.Функция обнаружения для @supports?

+0

насчет Модернизатор? –

+0

Это основа, правильно? Если возможно, я хотел бы как можно больше держаться подальше от каркасов. – Azrael

+0

Nope ... Функция обнаружения JS - http://modernizr.com/ –

ответ

1

Использование чистого CSS, вы можете сортировать полагаться на каскаде, чтобы определить, понимает ли браузер @supports, сделав @supports правило с универсально поддерживаемой декларацией, такие как color декларация, и опрокинув еще одно такого правила, объявленное в глобальном масштабе :

#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.

Смотрите мой ответ на this question для детального объяснения чистого метода CSS.

Если вы хотите, чтобы обнаружить его с помощью JavaScript, вы можете использовать библиотеку обнаружения 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. EDIT: Имеет ли значение, поддерживает ли блок поддержки медиа-блок? – Azrael

+0

@Elitis: Это не имеет значения - в этом случае блок '@ support' должен применяться тогда и только тогда, когда это делает и блок' @ media'. Если вам нужно исключить базовые стили из неподдерживаемых браузеров, переместите их в блок '@ support'. С другой стороны, если вам нужно исключить базовые стили из * поддерживающих * браузеров, вам также придется переопределить их - это недостаток, связанный с переопределением. – BoltClock

Смежные вопросы