How do I disable the resizable property of a textarea?
Asked Answered
I

22

3277

I want to disable the resizable property of a textarea.

Currently, I can resize a textarea by clicking on the bottom right corner of the textarea and dragging the mouse. How can I disable this?

Enter image description here

Ironclad answered 8/3, 2011 at 16:15 Comment(3)
@JDIsaaks - further, allowing resize in certain situations can break layout and printabilit (an important aspect of a current mission-critical project).Kowalski
Sometimes you really do want a non-resizeable textarea. For instance, in this case, when you're (conditionally) converting a textarea into something that just looks like a label. It looks really odd to have a label with a random floating grabber way off to the side.Prefer
For the love of all that is good, please don't do this on an actual textarea or you will alienate your power users. Breaking core browser functionality should be considered a nuclear option.Faultless
S
4312

The following CSS rule disables resizing behavior for textarea elements:

textarea {
  resize: none;
}

To disable it for some (but not all) textareas, there are a couple of options.

You can use class attribute in your tag(<textarea class="textarea1">):

.textarea1 {
  resize: none;
}

To disable a specific textarea with the name attribute set to foo (i.e., <textarea name="foo"></textarea>):

textarea[name=foo] {
  resize: none;
}

Or, using an id attribute (i.e., <textarea id="foo"></textarea>):

#foo {
  resize: none;
}

The W3C page lists possible values for resizing restrictions: none, both, horizontal, vertical, and inherit:

textarea {
  resize: vertical; /* user can resize vertically, but width is fixed */
}

Review a decent compatibility page to see what browsers currently support this feature. As Jon Hulka has commented, the dimensions can be further restrained in CSS using max-width, max-height, min-width, and min-height.

Super important to know:

This property does nothing unless the overflow property is something other than visible, which is the default for most elements. So generally to use this, you'll have to set something like overflow: scroll;

Quote by Sara Cope, http://css-tricks.com/almanac/properties/r/resize/

Steelman answered 8/3, 2011 at 16:17 Comment(7)
Is there a solution for Firefox, Opera and/or IE?Foretopgallant
@Šime IE and FF3 (and earlier) do not add support resizing, so a solution for them is not needed. For FF4, this solution should work.Steelman
as per davidwalsh.name/textarea-resize - use resize:vertical or resize:horizontal to constrain resizing to one dimension. Or use any of max-width, max-height, min-width and min-height.Vigesimal
Am I the only one who finds it weird to set this using css and not attributes? Why can't I then set disabled or checked or other properties using CSS ...Micronesia
@Micronesia Because "disabled" is a state, not a visual property. Thus it's logical that it shouldn't be decided by a styling language.Homoeroticism
This solution haven´t the best practices. You can do it with a MVC property. @Html.TextAreaFor(model => model.YourProperty, new { @style = "width: 90%; height: 180px; resize: none;" })Corbet
I initially attempted the above technique, but it did not work for me, so I then used textarea { resize: none; pointer-events: none; } That`s working perfectly fine on fireboxtools.com/tools/word-counterIndocile
Q
252

In CSS:

textarea {
    resize: none;
}
Quinze answered 8/3, 2011 at 16:17 Comment(0)
G
136

I found two things:

First

textarea{resize: none}

This is a CSS 3, which is not released yet, compatible with Firefox 4 (and later), Chrome, and Safari.

Another format feature is to overflow: auto to get rid of the right scrollbar, taking into account the dir attribute.

Code and different browsers

Basic HTML

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <textarea style="overflow:auto;resize:none" rows="13" cols="20"></textarea>
</body>
</html>

Some browsers

  • Internet Explorer 8

Enter image description here

  • Firefox 17.0.1

Enter image description here

  • Chrome

Enter image description here

Galleass answered 27/12, 2012 at 20:58 Comment(0)
S
76

CSS 3 has a new property for UI elements that will allow you to do this. The property is the resize property. So you would add the following to your stylesheet to disable resizing of all textarea elements:

textarea { resize: none; }

This is a CSS 3 property; use a compatibility chart to see browser compatibility.

Personally, I would find it very annoying to have resizing disabled on textarea elements. This is one of those situations where the designer is trying to "break" the user's client. If your design can't accommodate a larger textarea, you might want to reconsider how your design works. Any user can add textarea { resize: both !important; } to their user stylesheet to override your preference.

Spirochaetosis answered 8/3, 2011 at 16:35 Comment(1)
But that would be the user intentionally breaking their layout, rather than a user who just needs to resize his/her texarea and ends up making something not workPapyraceous
P
36
<textarea style="resize:none" rows="10" placeholder="Enter Text" ></textarea>
Phenobarbital answered 6/11, 2013 at 9:19 Comment(0)
C
28

If you need deep support, you can use an old school technique:

textarea {
    max-width: /* desired fixed width */ px;
    min-width: /* desired fixed width */ px;
    min-height: /* desired fixed height */ px;
    max-height: /* desired fixed height */ px;
    resize: none; /* If you wnt to hide the handle in the lower right corner */;
}
Chui answered 12/2, 2015 at 12:14 Comment(1)
Also use resize:none with this solution to prevent the handle appearing in the bottom corner which frustratingly doesn't work.Incite
H
24

This can be done in HTML easily:

<textarea name="textinput" draggable="false"></textarea>

This works for me. The default value is true for the draggable attribute.

Hylton answered 21/7, 2015 at 5:18 Comment(4)
This is an HTML 5 attribute, so only newer browsers will support. I read somewhere IE supports it from 9 onwards.Precambrian
This working in most browsers. in every latest browser.Hylton
it won't prevent textarea from resizingPsychrometer
@AntonyD'Andrea This isn't working on latest Chrome: jsfiddle.net/ps2v8df9Armington
V
17

You simply use: resize: none; in your CSS.

The resize property specifies whether or not an element is resizable by the user.

Note: The resize property applies to elements whose computed overflow value is something other than "visible".

Also resize not supported in Internet Explorer at the moment.

Here are different properties for resize:

No Resize:

textarea {
  resize: none;
}

Resize both ways (vertically & horizontally):

textarea {
  resize: both;
}

Resize vertically:

textarea {
  resize: vertical;
}

Resize horizontally:

textarea {
  resize: horizontal;
}

Also if you have width and height in your CSS or HTML, it will prevent your textarea be resized, with a broader browsers support.

Verisimilar answered 1/6, 2017 at 13:11 Comment(0)
K
14

Use this property resize: none;

textarea {
  resize: none;
}
Kurrajong answered 16/8, 2021 at 7:22 Comment(0)
M
11

You can simply disable the textarea property like this:

textarea {
    resize: none;
}

To disable vertical or horizontal resizing, use

resize: vertical;

or

resize: horizontal;
Misapprehend answered 28/5, 2018 at 7:9 Comment(0)
A
10

To disable the resize property, use the following CSS property:

resize: none;
  • You can either apply this as an inline style property like so:

    <textarea style="resize: none;"></textarea>
    
  • or in between <style>...</style> element tags like so:

    textarea {
        resize: none;
    }
    
Accolade answered 12/6, 2016 at 10:43 Comment(0)
F
10

you need to set the below CSS code in your component.css

textarea {
    resize: none;
}
Frankhouse answered 6/8, 2022 at 6:51 Comment(0)
R
8
textarea {
  resize: none;
}

The code above will disable the resizable property of all <textarea/> elements in your project. If you want that that is fine, otherwise you would want to use a specific class for your textarea elements.

.not-resizable {
   resize: none;
}

In your HTML

<textarea class="not-resizable"></textarea>
Reticule answered 21/7, 2021 at 9:38 Comment(0)
I
7

CSS 3 can solve this problem. Unfortunately it's only supported on 60% of used browsers nowadays.

For Internet Explorer and iOS you can't turn off resizing, but you can limit the textarea dimension by setting its width and height.

/* One can also turn on/off specific axis. Defaults to both on. */
textarea { resize:vertical; } /* none|horizontal|vertical|both */

See Demo

Irving answered 30/10, 2015 at 23:26 Comment(0)
R
7

To disable resize for all textareas:

textarea {
    resize: none;
}

To disable resize for a specific textarea, add an attribute, name, or an id and set it to something. In this case, it is named noresize

HTML

<textarea name='noresize' id='noresize'> </textarea>

CSS

/* Using the attribute name */
textarea[name=noresize] {
    resize: none;
}
/* Or using the id */

#noresize {
    resize: none;
}
Rental answered 25/10, 2016 at 8:19 Comment(0)
K
7

You can disable resizeable property of textarea using textarea {resize: none;}

textarea {
   resize: none;
}

Demo

Kayleigh answered 10/2, 2023 at 4:49 Comment(0)
U
6

I have created a small demo to show how resize properties work. I hope it will help you and others as well.

.resizeable {
  resize: both;
}

.noResizeable {
  resize: none;
}

.resizeable_V {
  resize: vertical;
}

.resizeable_H {
  resize: horizontal;
}
<textarea class="resizeable" rows="5" cols="20" name="resizeable" title="This is Resizable.">
This is Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea>

<textarea class="noResizeable" rows="5" title="This will not Resizable. " cols="20" name="resizeable">
This will not Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea>

<textarea class="resizeable_V" title="This is Vertically Resizable." rows="5" cols="20" name="resizeable">
This is Vertically Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea>

<textarea class="resizeable_H" title="This is Horizontally Resizable." rows="5" cols="20" name="resizeable">
This is Horizontally Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea>
Ulane answered 13/6, 2019 at 5:18 Comment(0)
C
4

With @style, you can give it a custom size and disable the resize feature (resize: none;).

@Html.TextAreaFor(model => model.YourProperty, new { @style = "width: 90%; height: 180px; resize: none;" })
Corbet answered 30/8, 2018 at 16:0 Comment(2)
Hello, thanks for your answer, next time please format the code.Jett
This is asp.net MVC based answer. Very nice.Gaal
H
1

You can try with jQuery also

$('textarea').css("resize", "none");
Homeo answered 15/12, 2016 at 8:8 Comment(2)
You should use more jquery. You're not using it enough. :)Frankel
It is a meme - e.g., "You should totally drop that and try jQuery.".Berky
V
0

Adding !important makes it work:

width:325px !important; height:120px !important; outline:none !important;

outline is just to avoid the blue outline on certain browsers.

Virginia answered 3/2, 2014 at 19:7 Comment(4)
Don't abuse !important attribute. Meaningless to fix the width & height if CSS attribute resize: none can remove the resize featureGraben
Isn't !important evil?Berky
In current Chrome this stop horizontal resizing, but I can still resize textarea vertically.Armington
In some rare cases this could be useful.Splint
D
0

If anyone is looking for a way to this in plain Javascript:

textArea = document.createElement("textarea");
textArea_input.setAttribute("style","resize:none");

Note: Setting the style property this way will overwrite all your prior css style declarations.

Disenable answered 2/6, 2023 at 6:43 Comment(0)
C
-1

Yes, you can disable the resizable property of a textarea using CSS. The following code will disable the resizable property of a textarea with the id my-textarea:

CSS Code:-

textarea#my-textarea {
  resize: none;
}

You can also disable the resizable property of all textareas on a page by adding the following code to your CSS stylesheet:

CSS Code:-

textarea {
  resize: none;
}

The resize property can have three values:

  • none: The textarea cannot be resized.
  • horizontal: The text area can only be resized horizontally.
  • vertical: The text area can only be resized vertically.

The default value of the resize property is none.

In addition to using CSS, you can also disable the resizable property of a textarea using JavaScript. The following code will disable the resizable property of a textarea with the id my-textarea:

JavaScript Code:-

const textarea = document.getElementById('my-textarea');
textarea.style.resize = 'none';

This code will overwrite any CSS styles that have been applied to the textarea.

To reduce the size of a textarea, you can use the rows and cols attributes in the HTML code. The rows attribute specifies the number of rows in the textarea, and the cols attribute specifies the number of columns. For example, the following code will create a textarea with 10 rows and 50 columns:

HTML Code:-

<textarea rows="10" cols="50"></textarea>

You can also use CSS to set the size of a textarea. The following code will set the height and width of a textarea with the id my-textarea to 100px and 200px, respectively:

CSS Code:-

textarea#my-textarea {
  height: 100px;
  width: 200px;
}
Cheju answered 29/8, 2023 at 11:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.