Wyłącz zmianę rozmiaru obszaru tekstowego


117

Próbuję wyłączyć zmianę rozmiaru textarea w mojej witrynie; w tej chwili używam tej metody:

.textarea {
    clear:left;
    min-width: 267px;
    max-width: 267px;
    min-height:150px;
    max-height:150px;
}

Wiem, że moja metoda nie jest poprawna i szukam lepszej w JavaScript. Jestem początkującym, więc najlepszym rozwiązaniem dla mnie będzie HTML5 lub jQuery.

Odpowiedzi:


253

Wypróbuj ten CSS, aby wyłączyć zmianę rozmiaru

CSS wyłączający zmianę rozmiaru dla wszystkich obszarów tekstowych wygląda następująco:

textarea {
    resize: none;
}

Zamiast tego możesz po prostu przypisać go do pojedynczego obszaru tekstowego według nazwy (gdzie znajduje się kod HTML obszaru tekstowego):

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

Lub według identyfikatora (gdzie tekst obszaru HTML jest):

#foo {
    resize: none;
}

Zaczerpnięte z: http://www.electrictoolbox.com/disable-textarea-resizing-safari-chrome/


7
Zamiast tylko linkować do rozwiązania, powinieneś to trochę wyjaśnić tutaj. Wiele osób, które w przyszłości przyjrzą się temu pytaniu, nie będzie mieć kłopotów z kliknięciem łącza w celu uzyskania odpowiedzi. Dodaj tutaj więcej szczegółów, a dam +1 Twojej odpowiedzi.
Jon Egeland


8

CSS3 może rozwiązać ten problem. Niestety obecnie jest obsługiwany tylko w 60% używanych przeglądarek .

W przypadku IE i iOS nie można wyłączyć zmiany rozmiaru, ale można ograniczyć textareawymiar, ustawiając jego widthi height.

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

Zobacz Demo


2

Można to łatwo zrobić, używając atrybutu html draggable

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

Wartość domyślna to prawda.


2
Pytanie dotyczy zmiany rozmiaru obszaru tekstu, a nie przeciągania i upuszczania. Tak więc zgodnie z oczekiwaniami ustawienie tego atrybutu w obszarze tekstowym nie działa w Chrome (przynajmniej).
peveuve

2

Tylko jedna dodatkowa opcja, jeśli chcesz przywrócić domyślne zachowanie dla wszystkich obszarów tekstowych w aplikacji, możesz dodać do swojego CSS:

textarea:not([resize="true"]) {
  resize: none !important;
}

I wykonaj następujące czynności, aby włączyć miejsce, w którym chcesz zmienić rozmiar:

<textarea resize="true"></textarea>

Pamiętaj, że to rozwiązanie może nie działać we wszystkich przeglądarkach, które chcesz obsługiwać. Możesz sprawdzić listę wsparcia resizetutaj: http://caniuse.com/#feat=css-resize


1

Jak na pytanie, wymieniłem odpowiedzi w javascript

Wybierając TagName

document.getElementsByTagName('textarea')[0].style.resize = "none";

Wybierając Id

document.getElementById('textArea').style.resize = "none";

0
//CSS:
.textarea {
    resize: none;
    min-width: //-> Integer number of pixels
    min-height: //-> Integer number of pixels
    max-width: //-> min-width
    max-height: //-> min-height
}

powyższy kod działa na większości przeglądarek

//HTML:
<textarea id='textarea' draggable='false'></textarea>

wykonaj obie te czynności, aby działało na maksymalnej liczbie przeglądarek


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.