Chcę powiedzieć, że jest to sprzeczne z „konwencjonalną mądrością”, ale ogólnie wolę używać rozmiaru. Powodem tego jest właśnie powód, dla którego wiele osób mówi, że nie: szerokość pola będzie się różnić w zależności od przeglądarki, w zależności od rozmiaru czcionki. W szczególności zawsze będzie wystarczająco duży, aby wyświetlić określoną liczbę znaków, niezależnie od ustawień przeglądarki.
Na przykład, jeśli mam pole daty, zwykle chcę, aby pole było wystarczająco szerokie, aby wyświetlało 8 lub 10 znaków (dwucyfrowy miesiąc i dzień oraz dwu- lub czterocyfrowy rok z separatorami). Ustawienie atrybutu rozmiaru zasadniczo gwarantuje, że cała data będzie widoczna, przy minimalnej marnowanej przestrzeni. Podobnie w przypadku większości liczb - znam zakres oczekiwanych wartości, więc ustawię atrybut size na odpowiednią liczbę cyfr plus kropka dziesiętna, jeśli dotyczy.
O ile wiem, żaden atrybut CSS tego nie robi. Na przykład ustawienie w nich szerokości opiera się na wysokości, a nie na szerokości, a zatem nie jest bardzo precyzyjne, jeśli chcesz wyświetlić znaną liczbę znaków.
Oczywiście ta logika nie zawsze ma zastosowanie - na przykład pole wprowadzania nazwy może zawierać dowolną liczbę znaków. W takich przypadkach powrócę do właściwości szerokości CSS, zwykle w px. Powiedziałbym jednak, że większość pól, które tworzę, zawierają jakąś znaną treść, a określając atrybut size, mogę upewnić się, że większość treści, w większości przypadków, jest wyświetlana bez przycinania.