Ukrywanie uchwytu zmiany rozmiaru obszaru tekstowego w Safari


97

W mojej aplikacji używam komponentów textarea i dynamicznie kontroluję ich wysokość. Gdy użytkownik pisze, wysokość jest zwiększana, gdy jest wystarczająco dużo tekstu. Działa to dobrze w IE, Firefox i Safari.

Jednak w przeglądarce Safari w prawym dolnym rogu znajduje się narzędzie „uchwyt”, które umożliwia użytkownikowi zmianę rozmiaru obszaru tekstu poprzez klikanie i przeciąganie. Zauważyłem również ten problem z obszarem tekstowym na stronie Zadaj pytanie w przepływie stosu. To narzędzie jest mylące i w zasadzie przeszkadza.

Czy w ogóle można ukryć ten uchwyt zmiany rozmiaru?

(Nie jestem pewien, czy „uchwyt” to właściwe słowo, ale nie mogę wymyślić lepszego terminu).

Odpowiedzi:


177

Możesz nadpisać zachowanie zmiany rozmiaru za pomocą CSS:

textarea
{
   resize: none;
}

lub po prostu

<textarea style="resize: none;">TEXT TEXT TEXT</textarea>

Prawidłowe właściwości to: both, horizontal, vertical, none


22
Nie jest to ściśle istotne w tym miejscu, ale Safari uwzględnia również właściwości CSS min-height, max-height, min-width i max-width, aby pozostawić włączoną zmianę rozmiaru, ale określając ograniczenia dotyczące tego, jak daleko może zmieniać rozmiar.
stevemegson

1
Dziękuję Ci!
alex

Co jeśli chcę pokazać go po najechaniu kursorem po ustawieniu zmiany rozmiaru: brak?
Michael Forrest,

@Michael Forrest: czy próbowałeś textarea: hover {resize: inherit! Important; }? Nigdy tego nie próbowałem, tylko przypuszczenie.
Tamas Czinege,

7
Jedno zastrzeżenie: brak zezwolenia użytkownikowi na zmianę rozmiaru <textarea>w ogóle może być problemem z użytecznością. Ustawienie resize:vertical;jest często lepszą opcją. Nie powinno zepsuć układu i daje użytkownikowi większe poczucie kontroli.
Web_Designer,

2

Użyj następującej reguły CSS, aby wyłączyć to zachowanie dla wszystkich TextAreaelementów:

textarea {
    resize: none;
}

Jeśli chcesz go wyłączyć dla niektórych (ale nie wszystkich) TextAreaelementów, masz kilka opcji (dzięki tej stronie ).

Aby wyłączyć określony TextAreaz nameatrybutem ustawionym na foo(tj. <TextArea name="foo"></TextArea>):

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

Lub używając identyfikatora (tj. <TextArea id="foo"></TextArea>):

#foo {
    resize: none;
}

Należy zauważyć, że dotyczy to tylko przeglądarek opartych na WebKit (tj. Safari i Chrome), które dodają uchwyt zmiany rozmiaru do TextAreaelementów sterujących.


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.