Прежде чем идти по безумному пути написания собственного CSS для каждого браузера (и, возможно, версии): избавьтесь от XHTML 1.0 Transitional doctype и перейдите к одному из строгих типов. Желательно html 4.01 строгий.
Уже одно это решит подавляющее большинство ваших проблем с боксом.
Дополнительная информация о типах документов:
Прочитайте обе страницы следующего сайта. Замечательные ссылки на странице 2.
http://www.communitymx.com/content/article.cfm?cid=85fee
http://www.alistapart.com/articles/doctype/
А для «легкого» чтения: http://hsivonen.iki.fi/doctype/
По сути, все браузеры имеют различные степени соответствия "стандартам". Все, что запускает режим «причуд» или является «переходным», следует рассматривать с подозрением. Однако, как только вы поймете, что такое doctype и ваш выбор вокруг него, вы полностью поймете, что происходит при любых различиях в отображении, с которыми вы сталкиваетесь.
Для меня одним из лучших способов обучения было создание простого плавающего макета div, управляемого CSS. У одних div хранятся изображения, у других был очень длинный текст, у всех была рамка, чтобы я мог видеть, где что-то ломалось. Затем я попробовал различные типы документов и просмотрел страницу в основных браузерах. Иногда различия были незначительными, как незначительно отличающиеся отступы по умолчанию или поля; иногда они были возмутительны, например, один браузер позволял наследовать стили, а другой нет.
У нас есть веб-приложение приличного размера (более 200 страниц) с довольно сложными требованиями к макету, и ЕДИНСТВЕННЫЙ «хак», который мне пришлось реализовать, заключался в том, чтобы заставить тег изображения (img) иметь значение display:block;
, чтобы оно выглядело идеальным с точки зрения пикселей идентичны в каждом браузере, и мы не используем условные таблицы стилей и не выполняем анализ браузера любого типа.