Понятен — да, красив — не всегда, он разный, если у тебя Tiger/Leopard/Vista/XP, то скорее всего тебе не захочется, чтобы на сайтах инпуты выглядели как-то иначе. Но есть миллион других графических сред, например Gnome/KDE с самыми разными настройками. В целом понятно желание автора сделать красиво везде, но менять ради этого один простой тег на сложную структуру из трех — дебилизм, очень жаль, что такие сайты есть. Это гораздо хуже табличной верстки :)
В Gnome/KDE пользователь точно настроит как ему нужно. Я например привык к стандартным элементам HTML формы (у меня OS X), они мне нравятся. Когда вижу эти элементы в непривычном оформлении - мне это не нравится.
Представьте - вы работаете в офисе с температурой +23 градуса, вам комфортно. Вдруг входит эскимос в шубе, с морозильной установкой и понижает темературу до +4, говоря при этом что "так лучше" :)
не проблема - просто особенность ие (высота инпута исключает рамку), я тоже был немного ей раздражен. Решается именно так, как указано выше - то есть установкой высоты для ие на 2 пикселя меньше.
решаю такие задачки иначе - селекторами, которые не понимает ие. в результате - валидный цсс.
input {height: 20px;} /* для IE */
html>body input {height: 22px;} /* не поймет IE6 */
/* или */
html>/**/body input {height: 22px;} /* не поймут IE6 и IE7 */
Забыл добавить: все правильные браузеры скушают именно вторую или третью строку, потому как уточненные селекторы по спецификации имеют более высокий приоритет. В случае наличия обеих строк воспримут вторую (так как вторая и третья - абсолюно одинаковы, дублирующийся селектор будет проигнорирован).
я тоже было начал рыть в сторону рамки, но потом решил, что о чем речь, если она установлена на 0 пикселей.
получается height* = height + border = height* + 0;
Это же ИЕ, в нем у некоторых элементов механика отличается. У инпутов в частности.
Как я в свое время определил проблему: изначально инпут имеет двойную рамку, причем рисуется она особым образом - внешняя рамка - нормальная, внутренняя работает как отступ (что и дает нам лишние 2 пикселя). В случае отключения рамки инпут расширяется на этот отступ.
А вообще мне кажется, что в такой ситуации не важно, почему инпут работает именно так. Проблема есть - проблема решается. Тут теория беполезна.
Что удивительно, вы не удосужились понять кода автора. В нем поле инпут может иметь любую ширину, в вашем же случае — лишь фиксированную ширину картинки.
Кроме того, ваш код в ИЕ 7 смотрится весьма устрашающе.
если человек пишет "...видимо, такие мудоебы и критикуют IE...", то дальше можно не читать. понятно, что мозги автора прижаты к стулу его собственным весом :)
Вариант 1:
Положить в слой с
http://plugins.jquery.com/project/jquery-roundcorners-canvas
Если таких элементов немного, то jquery не страшно. В IE6 гораздо более сносно, чем позиционированные блоки с уголками - всё делает само по себе.
Вариант 2:
Если есть желание, чтобы работало без скриптов - всё-таки, я бы выбрал табличку 3x3, в данном случае это минимальное зло, кто бы не говорил, кода получится меньше, чем трюки с кучкой вложенных слоёв и лишними CSS с хаками.
С версткой в IE