Увы, приходится иногда использовать и хаки - сложная не своя верстка, в которой нет времени разбираться, например…
У оперы хаки от версии к версии меняются, поэтому можно в css написать для нее как основы, а остальных поправить хаками (если требуется).
/* firefox */
@-moz-document url-prefix() {
.myclass {
font-size:16px;
}
/* ... */
}
/* chrome и safari */
@media all and (-webkit-min-device-pixel-ratio:0) {
.myclass {
font-size: 18px;
}
/* ... */
}
Для Internet Explorer - самое удобное. Подход называется “Conditional comments”. См. пример:
<!--[if IE]>
Special instructions for IE here
<![endif]-->
Внутри можно, например, подключить css, которая выполнится только в IE:
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="/css/ie.css">
<![endif]-->
Также, можно указывать версию IE:
<!--[if IE 6]> <![endif]-->
<!--[if IE 7]> <![endif]-->
<!--[if IE 8]> <![endif]-->
Или указывать версию больше или меньше:
gt: больше, чем.
lt: меньше, чем.
Если добавляется “e”, то еще и равно значению
<!--[if gt IE 6]>Больше 6-ого<![endif]-->
<!--[if lte IE 7]>Седьмой или меньше<![endif]-->
И помните, хаки - плохой выход.