Как определить, поддерживает ли браузер функцию CSS @supports? Поскольку Internet Explorer и Safari не поддерживают его, мое веб-приложение не знает, какие стили применять в этих браузерах.
Обнаружение функций для @supports?
comment
А Модернизатор?
- person Paulie_D   schedule 21.01.2014
comment
Это фреймворк, верно? Если возможно, я хотел бы держаться подальше от фреймворков.
- person Azrael   schedule 21.01.2014
comment
Нет... JS для обнаружения функций — modernizr.com
- person Paulie_D   schedule 21.01.2014
Ответы (1)
Используя чистый CSS, вы можете положиться на каскад, чтобы определить, понимает ли браузер @supports
, создав правило @supports
с универсально поддерживаемым объявлением, таким как объявление color
, и переопределив другое такое правило, объявленное глобально:
#test {
color: red;
}
@supports (color: green) {
#test {
color: green;
}
}
См. мой ответ на этот вопрос для подробного объяснения метода чистого CSS.
Если вы хотите обнаружить его с помощью JavaScript, вы можете использовать библиотеку обнаружения функций Modernizr, как указано в комментариях (будьте обязательно включите поддержку css в конфигурацию загрузки):
if (Modernizr.supports) {
console.log('Your browser supports @supports.');
} else {
console.log('Your browser does not support @supports.');
}
person
BoltClock
schedule
21.01.2014
Чистое решение CSS может быть ответом, который я искал. В настоящее время использую что-то подобное, но не знал о переопределяющей функциональности.
- person Azrael; 22.01.2014
При использовании вашего решения на чистом CSS применяются базовые правила стиля даже в браузерах, которые ранее отображали правила стиля в блоке @supports. РЕДАКТИРОВАТЬ: Имеет ли значение, находится ли блок поддержки в медиаблоке?
- person Azrael; 22.01.2014
@Elitis: Это не должно иметь значения - в этом случае блок
@supports
должен применяться тогда и только тогда, когда блок @media
также применяется. Если вам нужно исключить базовые стили из неподдерживающих браузеров, вместо этого переместите их в блок @supports
. С другой стороны, если вам нужно исключить базовые стили из поддерживающих браузеров, вам придется переопределить и их — в этом недостаток переопределения.
- person BoltClock; 22.01.2014