====== CSS-хаки и фильтры ======
===== Подключение CSS-файлов для IE =====
Для фильтрации CSS-стилей по версия IE используются так называемые [[http://msdn2.microsoft.com/en-us/library/ms537512.aspx|Conditional Comments]].
В файл ''cssf-ie6.css'' включена информация и краткое описание по следующим хакам.
===== :hover для IE =====
Для IE6 подключается htc-файл ''csshover2.htc'', для отработки событий ''*:hover'', в файле ''cssf-ie6.css''.
Используется [[http://www.xs4all.nl/~peterned/csshover.html|whatever:hover]].
===== PNG & IE =====
Для IE6 подключается htc-файл ''iepngfix.htc'', для правильной работы фоновых изображений формата PNG для всех элментов, в файле ''cssf-ie6.css''.
* { behavior: url("css/iepngfix.htc"); }
Используется [[http://www.twinhelix.com/css/iepngfix/|IE PNG Fix v1.0 RC4]] последней версии.
Кто считает каждый байт, есть пример использования фильтра для IE:
element {
background: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/png-image.png', sizingMethod='scale');
}
===== IE min-width & max-width =====
Весьма простой приём, с использованием [[http://msdn2.microsoft.com/en-us/library/ms537634.aspx|expression]]:
element {
min-width: 780px;
max-width: 1260px;
width: expression(document.body.clientWidth < 780? "780px" : document.body.clientWidth > 1260? "1260px" : "auto");
}
===== IE5 или IE6? =====
Также, в файл включен пример фильтрации CSS-свойств по версиям IE:
#hack {
color: green; /* IE 5.01 */
color/**/:blue; /* IE 5.5 */
c\olor: red; /* IE 6 не работает перед буквами a, b, c, d, e, f */
}
Интересующиеся могут посмотреть [[http://www.webdevout.net/css-hacks|CSS hacks]] и [[http://centricle.com/ref/css/filters/|css filters]].
===== Opera =====
Несколько способов написать CSS для Opera.
Обратите внимание, что **все эти хаки понимает и Safari**.
Инлайн стили:
/* Все версии оперы… */
@media all and (min-width: 0px) {
#element { color: red; }
}
/* Opera 6 */
@media all and (min-width: 1px) { {} #element { color: red; } }
/* Opera 7, 8 */
@media all and (min-width: 1px) { #element { color: red; } }
/* Opera 9 */
@media all and (width) { #element { color: red; } }
/* Opera 9 */
@media all and (min-width:0px) {
head~body #element { color: red; }
}
Или создать файл opera.css и подключить его в ''head'' секции документа:
Обратите внимание на ''type="opera/css"''. И скажите спасибо [[http://lovtsevich.com/|Павлу Ловцевичу]] за этот хак.
===== Safari =====
/* Safari 3 */
body:first-of-type #element { color: red; }
===== Mozilla Firefox =====
/* Gecko */
html:not([lang*=""]) #element { color: red; }
/* Mozilla Firefox */
html:not([lang]) #element { color: red; }
/* Firefox / Firebird / Phoenix, Netscape 6+ */
html:not[lang*=""] #element { color: red; }
/* Gecko 1.8+ - Firefox 1.5, Camino, Seamonkey, Galeon, Epiphany и т.д. */
html:not([lang*=""]):not(:only-child) #element { color: red; }
Эти правила понимает также и **Safari**
===== Konqueror =====
/* Konqueror */
html:not(:nth-child(1)) #element { color: red; }
----
Ссылки по теме:
* [[http://pornel.net/firefoxhack]]
* [[http://tmbu.info/browser-specific-css-hacks/]]
* [[http://www.evotech.net/blog/2007/06/targeting-safari-30-with-css/]]
* [[http://pokrovskii.com/6-expression-dlya-ie6/|http://pokrovskii.com/6-expression-dlya-ie6/]]