Ẩn điều khiển thay đổi kích thước vùng văn bản trong Safari


97

Tôi đang sử dụng các thành phần textarea trong ứng dụng của mình và tôi kiểm soát chiều cao của chúng một cách linh hoạt. Khi người dùng nhập, chiều cao được tăng lên bất cứ khi nào có đủ văn bản. Điều này hoạt động tốt trên IE, Firefox và Safari.

Tuy nhiên, trong Safari, có một công cụ "xử lý" ở phía dưới bên phải cho phép người dùng thay đổi kích thước vùng văn bản bằng cách nhấp và kéo. Tôi cũng nhận thấy vấn đề này với vùng văn bản trong trang Đặt câu hỏi của stackoverflow. Công cụ này khó hiểu và về cơ bản là cản trở.

Vì vậy, có cách nào để ẩn điều khiển thay đổi kích thước này không?

(Tôi không chắc liệu "xử lý" có phải là từ phù hợp hay không, nhưng tôi không thể nghĩ ra một thuật ngữ tốt hơn.)

Câu trả lời:


177

Bạn có thể ghi đè hành vi thay đổi kích thước bằng CSS:

textarea
{
   resize: none;
}

hoặc chỉ đơn giản

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

Thuộc tính hợp lệ là: cả hai, ngang, dọc, không


22
Không hoàn toàn liên quan ở đây, nhưng Safari cũng tôn trọng các thuộc tính CSS tối thiểu, chiều cao tối đa, chiều rộng tối thiểu và chiều rộng tối đa để bật tính năng thay đổi kích thước nhưng đặt giới hạn về khoảng cách nó có thể thay đổi kích thước.
stevemegson

1
Cảm ơn bạn! Định hỏi câu hỏi tương tự này :)
alex

Điều gì sẽ xảy ra nếu tôi muốn hiển thị nó khi di chuột sau khi tôi đã đặt resize: none?
Michael Forrest,

@Michael Forrest: bạn đã thử textarea: hover {resize: inherit! Important; }? Tôi chưa bao giờ thử nó, chỉ là phỏng đoán.
Tamas Czinege

7
Một lưu ý: Không cho phép người dùng thay đổi kích thước <textarea>có thể là một vấn đề về khả năng sử dụng. Cài đặt resize:vertical;thường là một lựa chọn tốt hơn. Nó sẽ không làm rối bố cục của bạn và nó mang lại cho người dùng cảm giác kiểm soát tốt hơn.
Web_Designer

2

Sử dụng quy tắc CSS sau để tắt hành vi này cho tất cả các TextAreaphần tử:

textarea {
    resize: none;
}

Nếu bạn muốn vô hiệu hóa nó cho một số (nhưng không phải tất cả) TextAreaphần tử, bạn có một số tùy chọn (nhờ trang này ).

Để tắt một cụ thể TextAreavới namethuộc tính được đặt thành foo(tức là <TextArea name="foo"></TextArea>):

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

Hoặc, sử dụng ID (tức là <TextArea id="foo"></TextArea>):

#foo {
    resize: none;
}

Lưu ý rằng điều này chỉ phù hợp với các trình duyệt dựa trên WebKit (tức là Safari và Chrome), các trình duyệt này thêm tay cầm thay đổi kích thước vào các TextAreađiều khiển.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.