У меня есть квадрат div фиксированного размера и вы хотите разместить изображение произвольного размера внутри, чтобы оно было центрировано как по горизонтали, так и по вертикали, используя CSS. Горизонтально легко:
.container { text-align: center }
Для вертикали общее решение:
.container {
height: 50px;
line-height: 50px;
}
img {
vertical-align: middle;
}
Но это не идеально, в зависимости от размера шрифта изображение будет примерно на 2-4 пикселя слишком далеко.
Насколько я понимаю, это потому, что "средний", используемый для вертикального выравнивания, на самом деле не является срединным, а конкретным положением на шрифте, близком к середине. A (слегка взломанный) обходной путь:
container {
font-size: 0;
}
и это работает в Chrome и IE7, но не в IE8. Мы надеемся сделать все линии шрифтов одной и той же точкой, посередине, но, похоже, это промах в зависимости от браузера и, возможно, от используемого шрифта.
Единственное решение, о котором я могу думать, это взломать высоту линии, делая ее немного короче, чтобы изображение отображалось в нужном месте, но оно кажется чрезвычайно хрупким. Есть ли лучшее решение?
Смотрите демо всех трех решений здесь: http://jsfiddle.net/usvrj/3/
Те, у кого нет IE8, могут найти этот скриншот полезным: