The size
attribute is mainly presentational, and I avoid it unless it’s really important to set a width for non-CSS browsers like Lynx. The exception is for select
elements, where it’s needed to create a list box instead of a drop-down list.
The widths of text fields etc should be specified with the width
property in CSS. It has the advantage of letting you specify the width in em, as well.
For textarea
elements the rows
and cols
attributes are required, but I still think the dimensions should be overridden with CSS.