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).

david.mchonechase
źródło

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

Tamas Czinege
źródło
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.

Gaurang P.
źródło