Ответ 1
Да, вертикальные поля рассчитываются принципиально другим способом по горизонтали; "Авто не означает центрирование.
Настройка "vertical-align: middle" на элементах изображения - это вид работ, но только выравнивает их по отношению к строке окна, они в настоящее время. Чтобы сделать линейную коробку той же самой высотой, что и float, установите "height-height" в контейнере:
<style>
div { float: left; width: 100px; height: 100px; line-height: 100px; }
div img { vertical-align: middle; }
</style>
Вы должны быть в Стандартном режиме, чтобы это работало, потому что в противном случае браузеры отображают изображения по-своему как блоки вместо встроенных заменили элементы в текстовой строке.
К сожалению, IE (по крайней мере до 7) по-прежнему сохраняет поведение блока даже при попытке режима стандартов. Для этого есть техническая причина, а именно, что IE - штаны.
Чтобы убедить IE, что вы действительно имеете в виду, что изображения являются частью текстовой строки, вам нужно добавить текст внутри div - даже нормальное пространство сделает это, но вы также можете попробовать пространство с нулевой шириной
<div><img src="http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png" width="50" height="60" />​</div>
<div><img src="http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png" width="60" height="50" />​</div>
<div><img src="http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png" width="75" height="75" />​</div>