An expanding text area is a multi-line text input field that expands in height to fit its contents. This UI element is commonly found in both desktop and mobile applications, such as the SMS composition field on the iPhone. Examples can also be found on the web, including on Facebook, where it's used extensively. It's a good choice wherever you don't know how much text the user will write and you want to keep the layout compact; as such, it's especially useful on interfaces targeted at smartphones.

Despite the ubiquity of this control, there's no way to create it using only HTML and CSS. While normal block-level elements (like a div, for example) expand to fit their content, the humble textarea does not, even if you style it as display: block. Since this is the only way to accept multi-line user input (other than using contenteditable, a whole world of pain I'm not going to dive into today), a little JavaScript is needed to make it resize as desired.