Фильтрация CSS по браузеру

Я как-то уже писал о том как подключить целый блок CSS только для FireFox, но чаще нужно подключить не блок, а всего один-два стиля. В этом случае удобно воспользоваться тем фактом, что браузер обязан игнорировать стиль, если в селекторе встречается что-то незнакомое.

Способ для FireFox мне подсказали в комментариях на «Хабре», для Internet Explorer я придумал его самостоятельно. Вот пример, иллюстрирующий идею:

.class { color: black } /* для всех остальных браузеров */
.class, noindex:-moz-any-link { color: blue } /* стиль только для Mozilla FireFox */
.class, v\:* { color: red } /* стиль только для Internet Explorer */

Можете попробовать самостоятельно — фильтрует идеально. В примере класс «class» даст тегу, к которому его применят, в FireFox — голубой цвет текста, в IE — красный, а в остальных браузерах — чёрный.

Комментарии 11

zencd.livejournal.com № 1
а что за логика в случае с IE, почему он её «съедает»?
Евгений Степанищев (bolknote.ru) автор № 2
С точки зрения других браузеров это невалидный селектор, а в IE он используется для всех тегов какого-либо пространства имён, «v» — это VML ( http://www.w3.org/TR/NOTE-VML ), который всё равно никто не использует, вот я его сюда и вписал.
astur (astur.net.ru) № 4
Жень, а зачем у тебя с Гаватара картинка просится, когда myopenid.com её сам отдаёт вместе с е-мейлом?
Евгений Степанищев (bolknote.ru) автор № 6
Комментарий для astur.net.ru:

myopenid её не отдаёт. Он использует pavatar.
yakushevsky (id.yakushevsky.com) № 9
Для эксплорера достаточно запятой:
.class, { color: red } /* стиль только для Internet Explorer */

Точнее для всех остальных браузеров достаточно этого, чтобы пропустить правило.