textarea đơn giản của tôi không hiển thị một thanh ngang khi văn bản tràn ra. Nó kết thúc văn bản cho một dòng mới. Vậy làm cách nào để loại bỏ wordwrap và hiển thị thanh ngang khi văn bản tràn ra?
textarea đơn giản của tôi không hiển thị một thanh ngang khi văn bản tràn ra. Nó kết thúc văn bản cho một dòng mới. Vậy làm cách nào để loại bỏ wordwrap và hiển thị thanh ngang khi văn bản tràn ra?
Câu trả lời:
Textareas không nên bọc theo mặc định, nhưng bạn có thể đặt quấn = "mềm" để vô hiệu hóa bọc:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
EDIT: Thuộc tính "bọc" không được hỗ trợ chính thức. Tôi đã nhận được nó từ trang SELFHTML của Đức (nguồn tiếng Anh ở đây ) cho biết IE 4.0 và Netscape 2.0 hỗ trợ nó. Tôi cũng đã thử nghiệm nó trong FF 3.0.7, nơi nó hoạt động như được cho là. Mọi thứ đã thay đổi ở đây, SELFHTML hiện là wiki và liên kết nguồn tiếng Anh đã chết.
EDIT2: Nếu bạn muốn chắc chắn mọi trình duyệt đều hỗ trợ nó, bạn có thể sử dụng CSS để thay đổi hành vi bao bọc:
Sử dụng Cascading Style Sheets (CSS), bạn có thể đạt được hiệu quả tương tự với
white-space: nowrap; overflow: auto;
. Do đó, thuộc tính quấn có thể được coi là lỗi thời.
Từ đây (dường như là một trang tuyệt vời với thông tin về textarea).
EDIT3: Tôi không chắc chắn khi nào nó thay đổi (theo nhận xét, phải có vào khoảng năm 2014), nhưng wrap
bây giờ là một thuộc tính HTML5 chính thức, xem w3schools . Thay đổi câu trả lời để phù hợp với điều này.
white-space: pre;
(hoặc pre-line
/ pre-wrap
) có ảnh hưởng tương tự như wrap="off"
đối với tôi (trong khi white-space: nowrap
không tôn trọng padding
)
wrap="off"
không còn hợp lệ tuy nhiên đó là yêu cầu cho cả IE và Edge!
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
cũng hoạt động nếu bạn không quan tâm đến khoảng trắng, nhưng tất nhiên bạn không muốn rằng nếu bạn đang làm việc với mã (hoặc đoạn văn thụt lề hoặc bất kỳ nội dung nào có thể cố tình có nhiều khoảng trắng) ... vì vậy tôi thích pre
.
overflow-wrap: normal
(là word-wrap
trong các trình duyệt cũ hơn) là cần thiết trong trường hợp một số phụ huynh đã thay đổi cài đặt đó; nó có thể gây ra sự quấn ngay cả khi pre
được đặt.
cũng - trái với câu trả lời chấp nhận hiện nay - textareas làm thường quấn theo mặc định. pre-wrap
dường như là mặc định trên trình duyệt của tôi.
overflow-x: scroll
bằng overflow: auto
. Các thanh cuộn giảm không gian gõ có sẵn trong vùng văn bản. Ngoài ra, IE11 kết xuất một thanh cuộn dọc không cần thiết theo cách của bạn, nhưng đã overflow: auto
sửa nó.
Giải pháp dựa trên CSS sau đây hoạt động với tôi:
<html>
<head>
<style type='text/css'>
textarea {
white-space: nowrap;
overflow: scroll;
overflow-y: hidden;
overflow-x: scroll;
overflow: -moz-scrollbars-horizontal;
}
</style>
</head>
<body>
<form>
<textarea>This is a long line of text for testing purposes...</textarea>
</form>
</body>
</html>
Tôi đã tìm ra một cách để tạo ra một vùng văn bản với tất cả điều này hoạt động cùng một lúc:
Nó hoạt động tốt trên:
Hãy để tôi giải thích cách tôi làm điều đó: Tôi đang sử dụng công cụ tích hợp thanh tra Chrome và tôi thấy các giá trị trên các kiểu CSS, vì vậy tôi đã thử các giá trị này, thay vì các giá trị bình thường ... dùng thử & lỗi cho đến khi tôi giảm nó xuống mức tối thiểu và ở đây dành cho bất cứ ai muốn nó.
Trong phần CSS tôi chỉ sử dụng điều này cho Chrome, Firefox, Opera và Safari:
textarea {
white-space:nowrap;
overflow:scroll;
}
Trong phần CSS tôi chỉ sử dụng điều này cho IE:
textarea {
overflow:scroll;
}
Đó là một chút khó khăn, nhưng có CSS.
Một thẻ (x) HTML như thế này:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
Và ở cuối <head>
phần, một JavaScript như thế này:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
JavaScript là để làm cho trình xác nhận W3C vượt qua XHTML 1.1 Strict, vì thuộc tính quấn không chính thức và do đó không thể là thẻ HTML (x) trực tiếp, nhưng hầu hết các trình duyệt đều xử lý nó, vì vậy sau khi tải trang, nó đặt thuộc tính đó.
Hy vọng điều này có thể được thử nghiệm trên nhiều trình duyệt và phiên bản hơn và giúp ai đó cải thiện nó và làm cho nó hoàn toàn là trình duyệt chéo cho tất cả các phiên bản.
Câu hỏi này dường như là câu hỏi phổ biến nhất để vô hiệu hóa textarea
bọc. Tuy nhiên, kể từ tháng 4 năm 2017 tôi thấy rằng IE 11 (11.0.9600) sẽ không vô hiệu hóa gói từ với bất kỳ giải pháp nào ở trên.
Các chỉ giải pháp mà làm việc cho IE 11 là wrap="off"
. wrap="soft"
và / hoặc các thuộc tính CSS khác nhau như white-space: pre
thay đổi trong đó IE 11 chọn để bọc nhưng nó vẫn bao bọc ở đâu đó. Lưu ý rằng tôi đã kiểm tra điều này có hoặc không có Chế độ xem tương thích . IE 11 tương thích HTML 5, nhưng không phải trong trường hợp này.
Do đó, để đạt được các dòng giữ lại khoảng trắng của chúng và đi ra phía bên tay phải tôi đang sử dụng:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
Thật tình cờ, điều này dường như cũng hoạt động trong Chrome & Firefox. Tôi không bảo vệ việc sử dụng tiền HTML 5 wrap="off"
, chỉ nói rằng nó dường như được yêu cầu cho IE 11.
Nếu bạn có thể sử dụng JavaScript, sau đây có thể là tùy chọn di động nhất hiện nay (đã thử nghiệm Firefox 31, Chrome 36):
contenteditable="true"
http://jsfiddle.net/cirosantilli/eaxgesoq/
<style>
div#editor {
white-space: pre;
word-wrap: normal;
overflow-x: scroll;
}
<style>
<div contenteditable="true"></div>
Dường như không có giải pháp CSS di động tiêu chuẩn:
wrap
thuộc tính không chuẩn
white-space: pre;
không hoạt động cho Firefox 31 cho textarea
. Fiddle , yêu cầu tính năng mở .
Ngoài ra, nếu bạn có thể sử dụng Javascript, bạn cũng có thể sử dụng trình soạn thảo ACE:
http://jsfiddle.net/cirosantilli/bL9vr8o8/
<script src="http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
<div id="editor">content</div>
<script>
var editor = ace.edit('editor')
editor.renderer.setShowGutter(false)
</script>
Có thể hoạt động với ACE vì nó không sử dụng một textarea
trong hai điều chưa được xác định / thực hiện không mạch lạc, nhưng không chắc chắn nếu nó được sử dụng contenteditable
.