В настоящее время можно нормализовать ширину «размерных» входов с помощью блока ch , который достиг достойной поддержки браузера.
К сожалению, по-прежнему невозможно писать:
input[size] {
width: attr(size) "ch";
}
Таким образом, мы должны стилизовать ширину, которую мы знаем , которую будем использовать:
input[size="10"] {width: 10ch;}
input[size="20"] {width: 20ch;}
input[size="30"] {width: 30ch;}
/* etc. */
Это можно легко автоматизировать с помощью препроцессора CSS.
ОБНОВЛЕНИЕ:
Я сделал тестовую скрипку .На сегодняшний день (февраль 2018 г.) это работает в Windows 10 с Chrome 63, Edge 41, FF 58. В IE 11 происходит сбой.Я не пробовал на OS X.