Ars Longa, Vita Brevis

Тонкая настройка CSS в различных браузерах

В Internet есть много статей, посвященных вопросу "to hack or not to hack". Я не хочу обсуждать этот "извечный вопрос", только замечу: что бы там ни говорили противники хаков, хаки весьма и весьма популярны (к счастью или сожалению). Я решил сделать небольшую подборку CSS-хаков для различных браузеров. По сути дела, эта статья является компиляцией очень многих источников.

CSS-хаки для Gecko

Gecko — движок для отображения web-страниц, используемый в браузерах на основе Mozilla: Firefox, Netscape, SeaMonkey, Flock, Songbird, Beonex, K-Meleon, Camino, Galeon, Epiphany, Kazehakase, Skipstone.

  • Gecko 0.6: Netscape 6.0;
  • Gecko 0.9.4: Netscape 6.2;
  • Gecko 0.9.7: Galeon 1.0.2;
  • Gecko 1.0.1: Netscape 7.0, Beonex 0.8.2;
  • Gecko 1.1: Skipstone 0.8.3;
  • Gecko 1.2b: FireFox 0.1;
  • Gecko 1.4.1: Epiphany 1.0.4
  • Gecko 1.5: K-Meleon 0.8.2;
  • Gecko 1.7.5: Netscape 8, Galeon 2.0, Kazehakase 0.2.8;
  • Gecko 1.7.13: FireFox 1.0.8;
  • Gecko 1.8.0: FireFox 1.5, SeaMonkey 1.0, Flock 0.7, Songbird 0.2, K-Meleon 1.02, Camino 1.0;
  • Gecko 1.8.1: FireFox 2.0, Netscape 9, SeaMonkey 1.1, Flock 1.0, K-Meleon 1.1, Camino 1.5.5, Epiphany 2.16, Skipstone 1.0.0;
  • Gecko 1.9b: FireFox 3.0b, SeaMonkey 2.0, Songbird 0.3.

Правила, которые понимает только Gecko/Netscape 4

Netscape 4

Данный хак известен как "Caio hack" (в честь Caio Chassot, его обнаружевшего).
Срабатывает в Opera 5 (Win и Mac)

[-]
View Code CSS
/*/*/ /*/
something {}
/**/

Старые Gecko, точные версии неизвестны (работает для OmniWeb 5)

Есть подозрение, что работает только в Gecko 1.2

[-]
View Code CSS
html*#id:not([lang*=""]) something {}

Старые Gecko, точные версии неизвестны (не работает для OmniWeb 5)

Есть подозрение, что работает только в Gecko 1.2
Не валидирующийся CSS

[-]
View Code CSS
html:not([lang*=""])*#id something {}

Gecko 1.0+

[-]
View Code CSS
html:not([xmlns*=""]) something {}

Gecko 1.0-1.8 включительно

Данный хак основан на том, что значения атрибутов id и class не чувствительны к регистру для этих версий Gecko.

[-]
View Code CSS
html:not([xmlns*=""]) #id[id="ID"] something,
html:not([xmlns*=""]) .class[class="CLASS"] something {}

Gecko 1.8+

[-]
View Code CSS
html:not([xmlns*=""]):not(:only-child) something {}

Gecko 1.9

Gecko 1.9 чувствителен к регистру для значений атрибутов id и class (что согласуется со спецификацией CSS).

[-]
View Code CSS
html:not([xmlns*=""]) #id:not([id="ID"]) something,
html:not([xmlns*=""]) .class:not([class="CLASS"]) something <span class="