Сделать CSS применимым только для Opera 11?

Есть ли способ сделать некоторые правила CSS применимыми только для Opera (11)?


person Tomkay    schedule 10.01.2011    source источник


Ответы (7)


Я люблю вызовы!
Мне потребовалось некоторое время, но я наконец нашел его:

body {background:0} /* default */
@media not screen and (1) {
body {background:red} /* OP 11 */
}
@media not screen and (orientation) {
body {background:green} /* for the earlier versions of Opera that pick the first media query's rule + chrome/safari */
}

проверенные браузеры:

  • красный: Опера 11
  • зеленый: браузеры Opera 10 и 10.5 + WebKit
  • нет: Opera 9.26 + Firefox 3.6 + IE9

Это связано с обработкой ошибок, а также с тем фактом, что НЕ отменяет глобальный результат (браузеры WebKit неправильно оценивают ориентацию без допустимого значения). Поскольку orientation поддерживается в presto 2.7, второй медиа-запрос имеет значение FALSE.

Название фальшивая ориентация мне кажется хорошим.

person Knu    schedule 18.01.2011
comment
Сэр. Вы официально (и я действительно даю вам гарантию на это) УДИВИТЕЛЬНЫЙ. - person Tomkay; 19.01.2011
comment
Как кто-то мог найти такой взлом? :-о - person Petr Peller; 06.04.2011

Есть ли веская причина, по которой вы хотите это сделать?

Я всегда рекомендую не выполнять обнаружение браузера. Почти в каждом случае, когда люди хотят его использовать, лучше вместо этого использовать обнаружение признаков. Если вы узнаете, поддерживается ли нужная вам функция, вы автоматически начнете поддерживать новые версии других браузеров, когда они догонят, без необходимости постоянно работать над обновлением вашего сайта, как если бы вы использовали сценарии обнаружения браузера.

Я могу предложить один из лучших инструментов для обнаружения функций — использовать Modernizr.

Для обнаружения браузера — особенно нового браузера, такого как Opera11 — я не могу предложить ничего надежного. Правильный ответ — посмотреть на строку агента пользователя, но пользователь может легко изменить ее, чтобы подделать другой браузер (и часто, особенно пользователи Opera, поскольку именно они чаще всего пытаются обойти сайты, которые не работают). обнаружение браузера и попытаться заблокировать их)

person Spudley    schedule 10.01.2011
comment
Это определенно хороший момент, и я согласен с вами ... но я стараюсь избегать javascript, насколько это возможно ... и мне любопытно, нашел ли кто-нибудь еще хак для Opera 11. - person Tomkay; 10.01.2011

Вы можете попробовать использовать http://www.headjs.com/

person Matthijs    schedule 10.01.2011
comment
+1 Хорошая находка! Это будет полезно для прямой совместимости. - person jmort253; 17.01.2011

Я не знаю способа, основанного только на CSS, поскольку Opera 11 все еще ОЧЕНЬ нова.

Вы можете либо использовать серверные языки, такие как PHP, для определения User Agent браузера, либо использовать бесплатно доступное решение Javascript Выбор браузера CSS.

Приведенное выше решение еще не включает Opera 11, поэтому давайте проверим строку пользовательского агента Opera 11, проверив их ссылки. . (На самом деле у них есть собственная статья о том, как обнаружить Opera)

Opera/9.80 (Windows NT 5.1; U; en) Presto/2.7.39 Версия/11.00

Когда вы теперь посмотрите на Javascript вышеупомянутого селектора браузера CSS, вы увидите, что он просто считывает navigator.userAgent и сравнивает его со многими вариантами — просто добавьте свой вариант Opera 11, и все готово (или подождите, пока разработчик обновит javascript - или еще лучше, обновите скрипт и сообщите об этом автору!).

person Dennis G    schedule 10.01.2011

Ну вот......

/* Opera */
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)
{
here you can display anything you want just for opera
}
person the_    schedule 17.01.2011

Следующий стиль действительно будет отображаться только в Opera. Подробнее см. в сообщении в блоге Webmonkeys:

@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {
    #myid { background-color: #F00; }
}

Но имейте в виду, что все виды хаков CSS могут больше не работать в будущем. Поэтому я настоятельно рекомендую добавлять динамические стили только для Opera с jQuery (jQuery.browser ).

person Martin Buberl    schedule 17.01.2011
comment
Другой ответ уже дал тот же код. но я даю вам точку для включения ссылки на блог. Я действительно надеюсь, что никогда не увижу сайт, использующий этот хак. :-с - person Spudley; 18.01.2011
comment
Когда я нажал на ответ и написал его, ответ the_ не совсем соответствовал тому, что я хотел написать. Я видел, что это дубликат, но я решил оставить его только для справки. - person Martin Buberl; 18.01.2011

Псевдокласс read-only — это простой фильтр для Opera:

#foo:read-only { overflow: auto; }
person Paul Sweatte    schedule 12.06.2013