Voglio dire che questo va contro la "saggezza convenzionale", ma generalmente preferisco usare le dimensioni. Il motivo è proprio il motivo per cui molte persone non dicono: la larghezza del campo varia da browser a browser, a seconda della dimensione del carattere. In particolare, sarà sempre abbastanza grande da visualizzare il numero specificato di caratteri, indipendentemente dalle impostazioni del browser.
Ad esempio, se ho un campo data, in genere desidero che il campo sia sufficientemente ampio da visualizzare 8 o 10 caratteri (mese e giorno a due cifre e anno a due o quattro cifre, con separatori). L'impostazione dell'attributo size mi garantisce sostanzialmente che l'intera data sarà visibile, con uno spazio minimo sprecato. Allo stesso modo per la maggior parte dei numeri: conosco l'intervallo di valori previsti, quindi imposterò l'attributo size sul numero corretto di cifre, più il punto decimale, se applicabile.
Per quanto ne so, nessun attributo CSS lo fa. L'impostazione di una larghezza in em, ad esempio, si basa sull'altezza, non sulla larghezza, e quindi non è molto preciso se si desidera visualizzare un numero noto di caratteri.
Naturalmente, questa logica non si applica sempre: un campo di immissione nome, ad esempio, può contenere un numero qualsiasi di caratteri. In quei casi tornerò alle proprietà della larghezza CSS, in genere in px. Tuttavia, direi che la maggior parte dei campi che creo hanno una sorta di contenuto noto e, specificando l'attributo size, posso assicurarmi che la maggior parte del contenuto, nella maggior parte dei casi, venga visualizzato senza ritaglio.