Я думаю, что наконец-то решил проблему. Одним из обычно рекомендуемых решений является использование вертикального выравнивания: среднее:
<input type="radio" style="vertical-align: middle"> Label
Проблема, однако, состоит в том, что это все еще вызывает видимые смещения, даже если теоретически это должно работать. Спецификация CSS2 гласит:
вертикальное выравнивание: середина: Совместите вертикальную среднюю точку поля с базовой линией родительского блока плюс половину высоты родителя x.
Таким образом, он должен быть в идеальном центре (высота х - это высота символа х). Однако, проблема, кажется, вызвана тем фактом, что браузеры обычно добавляют некоторые случайные неравные поля для переключателей и флажков. Можно проверить, например, в Firefox с помощью Firebug, что поле для флажка по умолчанию в Firefox равно 3px 3px 0px 5px
. Я не уверен, откуда это взялось, но другие браузеры, похоже, также имеют схожие поля. Таким образом, чтобы получить идеальное выравнивание, нужно избавиться от этих полей:
<input type="radio" style="vertical-align: middle; margin: 0px;"> Label
Еще интересно отметить, что в табличном решении поля как-то съедаются, и все хорошо выравнивается.