CSS xаки и для различных браузеров

30.01.2011, категория - HTML+CSS
dead-ie

Если перед свойством в css поставить подчеркивание “_”, или дефис “-”, то эти свойства будут восприниматься только IE версии 6 и ниже:

1
2
.style {_background:#F00;}
\\width:100px; - видят только ie 5.0 и ie 5.5 (неактуально)

Звездочка . Работает для IE7 и ниже:

1
2
 
p { background:red; /* Применимо ко всем браузерам */ *background: green; /* Применимо к IE6 и ниже */ }
1
2
3
4
5
#hack{
color:green; /* IE 5.01 */
color/**/:blue; /* IE 5.5 */
c\olor red; /* IE 6 не работает перед буквами a, b, c, d, e, f */
}
1
* html .ie6 {color:red;} /* Хак только для IE6 */

IE6 и ниже проигнорирует эти правила:

1
2
div>span {}
div+span {}

IE min-width & max-width : максимальная и минимальная ширина блока:

1
2
3
4
5
#element {
min-width:780px;
max-width:1260px;
width expression(document.body.clientWidth < 780? "780px" : document.body.clientWidth > 1260? "1260px" : "auto");
}

Box Model . Хак используется для того, чтобы справиться с глюком эксплорера, в котором border и padding включаются в ширину элемента:

1
2
3
4
padding:4em;
border:1em solid red;
width:30em;
width/**/:/**/ 25em;

Min-height хак от Дастина Диаза:

1
2
3
4
5
selector {
min-height:500px;
height:auto !important;
height:500px;
}

Internet Explorer 7.0 и ниже
Не все хаки для IE7 работают если в начале документа не указать !DOCTYPE.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
*+html .style {  background: #F00;}
 
html>body .style {*background: #F00;}
 
*:first-child+html {} * html {} /* IE 7 и ниже */
 
*:first-child+html {} /* IE 7 только */
 
html>body {} /* IE 7 и нормальные браузеры */
 
html>/**/body {} /* Только нормальные браузеры (не IE 7) */
 
>body {} /* выбирает элемент body только в IE7 */
 
html* {} /* выделяет все элементы внутри элемента html. Только для IE7 и ниже. */
 
//width:100px; - так написаное свойство проигнорируют все браузеры кроме ie 7.0 и меньше
 
.ie7b {#color:#00FF00;} /* Хак только для IE7,6 */

a:link:visited, a:visited:link В соответствии со стандартами, псевдотеги :link и :visited взаимно исключаемы,
то есть :link означает непосещенную ссылку. Тем не менее, IE 7 и ниже проигнорируют эти псевдо-классы, если
какой-нибудь другой появится ниже в том же селекторе.

1
2
a:link:visited, a:visited:link {}
a:link:visited, a:visited:link {} /* выбирает элемент a в IE7 и ниже */

Условные комментарии
Условие может быть таким: IE – для любой версии IE
lt IE v – (less than) для всех браузеров IE, версия которых меньше чем v
lte IE v – (less than or equal) для всех браузеров IE, версия которых меньше чем v, или такая же
gte IE v – (greater than or equal) – для IE, версия которых больше или равна v
gt IE v – (greater than) – для IE, версия которых больше v.

Для всех версий IE:

1
2
<!--[if IE]>
<link rel="stylesheet" href="css/cssf-ie.css" type="text/css" media="screen" /><![endif]-->

Для 7-й версии:

1
2
<!--[if IE 7]>
<link rel="stylesheet" href="css/cssf-ie7.css" type="text/css" media="screen" /><![endif]-->

Для 5.01, 5.5 и 6.0:

1
2
<!--[if lte IE 6]>
<link rel="stylesheet" href="css/cssf-ie6.css" type="text/css" media="screen" /><![endif]-->

CSS-хаки для браузера Opera

1
2
3
4
5
6
7
8
9
10
11
12
13
@media all and (-webkit-min-device-pixel-ratio:10000),
 
not all and (-webkit-min-device-pixel-ratio:0) {
 
.style {background: #F00;} /* только для Opera */
 
}
 
html:first-child {}  /* только для Opera */
 
html:first-child .style {
background: #F00; /* только для Opera < 9.5 */
}

Можно создать файл opera.css и подключить его в head секции документа:

1
2
3
<head>
<link rel="stylesheet" href="css/opera.css" type="opera/css" media="screen" />
</head>

CSS хаки для FireFox:

1
2
3
html:first-child .class { color: #368EF1; } /* для FireFox */
 
@-moz-document url-prefix(){body { color: #368EF1; }}

CSS-хак для Safari

1
body:first-of-type #element { color: red; }

CSS-хак для Konqueror

1
html:not(:nth-child(1)) #element { color: red; }

Для нескольких браузеров:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.class, x:-moz-any-link { color: #368EF1; } /* для FireFox, но так же работает в Internet Explorer 7 */
 
@media all and (min-width: 0) {.safariOperaChrome {color:#FF00FF;}} /* Хак только для Safari, Opera, Google Chrome*/
 
@media all and (min-width: 0) {div span { background: #FF0}} /*только для Opera* (так же видит Safari 3 и Google Chrome) /
 
html:not([lang*=""]):not(:only-child) .ffSafariChrome {color:#990000;} /* Хак только для IE7, FireFox */html:root div {} /* для Firefox (также видит safari3) */
 
html:root .ffSafariChrome {color:#660066;} /* Хак только для Safari, FireFox, Google Chrome */
 
body:first-of-type .operaChromeSafari {color:orange;} /* Хак только для Safari, Opera, Google Chrome */
 
html>/**/body {} /* Все современные браузеры, кроме IE 7 */
 
/*\*//*/selector{property:value;}/**/ /* MacIE */

Надеюсь никто не обидиться за этот маленький копипаст полезных хаков. :)

Комментарии

    Nivovan 13.2.2011 в 20:43 Ответить

    Спасибо за полезный код, как раз искал, как задать CSS только для IE7.