Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a simple way to make html textarea and input type text equally wide?

Tags:

html

css

textarea

Is there a simple way of getting a HTML textarea and an input type="text" to render with (approximately) equal width (in pixels), that works in different browsers?

A CSS/HTML solution would be brilliant. I would prefer not to have to use Javascript.

Thanks /Erik

like image 675
Erik Öjebo Avatar asked Aug 26 '08 17:08

Erik Öjebo


People also ask

How do I fix the width of my textarea?

To prevent a text field from being resized, you can use the CSS resize property with its "none" value. After it you can use the height and width properties to define a fixed height and width for your <textarea> element.

How do I increase the width of a textarea in HTML?

You need to define width of the div containing the textarea and when you declare textarea , you can then set . main > textarea to have width: inherit . Note: .


6 Answers

You should be able to use

.mywidth {
  width: 100px;   
}
<input class="mywidth">
<br>
<textarea class="mywidth"></textarea>
like image 193
Re0sless Avatar answered Sep 29 '22 21:09

Re0sless


To answer the first question (although it's been answered to death): A CSS width is what you need.

But I wanted to answer Gaius's question in the answers. Gaius, you're problem is that you are setting the width's in em's. This is a good think to do but you need to remember that em's are based on font size. By default an input area and a textarea have different font faces & sizes. So when you are setting the width to 35em, the input area is using the width of it's font and the textarea is using the width of it's font. The text area default font is smaller, therefore the text box is smaller. Either set the width in pixels or points, or ensure that input boxes and textareas have the same font face & size:

.mywidth {
  width: 35em;
  font-family: Verdana;
  font-size: 1em;
}
<input type="text" class="mywidth"/><br/>
<textarea class="mywidth"></textarea>

Hope that helps.

like image 36
Lee Theobald Avatar answered Sep 30 '22 21:09

Lee Theobald


Someone else mentioned this, then deleted it. If you want to style all textareas and text inputs the same way without classes, use the following CSS (does not work in IE6):

input[type=text], textarea { width: 80%; }
like image 34
John Sheehan Avatar answered Sep 27 '22 21:09

John Sheehan


This is a CSS question: the width includes the border and padding widths, which have different defaults for INPUT and TEXTAREA in different browsers, so make those the same as well:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width</title>
<style type="text/css">
textarea, input { padding:2px; border:2px inset #ccc; width:20em; }
</style>
</head>
<body>
<p><input/><br/><textarea></textarea></p>
</body>
</html>

This is described in the Box dimensions section of the CSS specification, which says:

The box width is given by the sum of the left and right margins, border, and padding, and the content width.

like image 22
Peter Hilton Avatar answered Sep 28 '22 21:09

Peter Hilton


Use CSS3 to make textbox and input work the same. See jsFiddle.

.textarea, .textbox {
    width: 200px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box; 
}
like image 23
Justin Avatar answered Sep 26 '22 21:09

Justin


Yes, there is. Try doing something like this:

<textarea style="width:80%"> </textarea>
<input type="text" style="width:80%" />

Both should equate to the same size. You can do it with absolute sizes (px), relative sizes (em) or percentage sizes.

like image 22
James B Avatar answered Sep 27 '22 21:09

James B