ข้อความธรรมดาของฉันไม่แสดงแถบแนวนอนเมื่อมีข้อความล้น มันตัดข้อความสำหรับบรรทัดใหม่ ดังนั้นฉันจะลบ wordwrap และแสดงแถบแนวนอนเมื่อข้อความล้นได้อย่างไร
ข้อความธรรมดาของฉันไม่แสดงแถบแนวนอนเมื่อมีข้อความล้น มันตัดข้อความสำหรับบรรทัดใหม่ ดังนั้นฉันจะลบ wordwrap และแสดงแถบแนวนอนเมื่อข้อความล้นได้อย่างไร
คำตอบ:
Textareas ไม่ควรทำการปิดโดยปริยาย แต่คุณสามารถตั้งค่า wrap = "soft" เป็นปิดการใช้งาน wrap อย่างชัดเจน:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
แก้ไข: แอตทริบิวต์ "wrap" ไม่ได้รับการสนับสนุนอย่างเป็นทางการ ฉันได้รับจากหน้า SELFHTML ภาษาเยอรมัน (แหล่งที่มาของภาษาอังกฤษอยู่ที่นี่ ) ซึ่งระบุว่า IE 4.0 และ Netscape 2.0 รองรับ ฉันยังทดสอบใน FF 3.0.7 ซึ่งทำงานได้ตามที่ควร สิ่งต่าง ๆ มีการเปลี่ยนแปลงที่นี่ SELFHTML เป็นวิกิและลิงก์ซอร์สภาษาอังกฤษนั้นตายแล้ว
EDIT2: หากคุณต้องการให้แน่ใจว่าทุกเบราว์เซอร์รองรับคุณสามารถใช้ CSS เพื่อเปลี่ยนพฤติกรรมการห่อ:
ด้วยการใช้ Cascading Style Sheets (CSS) คุณสามารถใช้เอฟเฟกต์แบบเดียวกัน
white-space: nowrap; overflow: auto;
ได้ ดังนั้นแอตทริบิวต์ wrap สามารถถือได้ว่าล้าสมัย
จากที่นี่ (ดูเหมือนจะเป็นหน้าที่ยอดเยี่ยมพร้อมข้อมูลเกี่ยวกับ textarea)
edit3: ผมไม่แน่ใจว่าเมื่อมันมีการเปลี่ยนแปลง (ตามความคิดเห็นที่คงจะรับรอบ 2014) แต่wrap
ตอนนี้เป็นคุณลักษณะ HTML5 อย่างเป็นทางการดูw3schools เปลี่ยนคำตอบเพื่อให้ตรงกับนี้
white-space: pre;
(หรือpre-line
/ pre-wrap
) มีผลเช่นเดียวwrap="off"
กับฉัน (ในขณะที่white-space: nowrap
ไม่เคารพpadding
)
wrap="off"
ไม่ถูกต้องอีกต่อไป แต่เป็นข้อกำหนดสำหรับทั้ง IE และ Edge!
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
ยังใช้งานได้ถ้าคุณไม่สนใจเกี่ยวกับช่องว่าง แต่แน่นอนคุณไม่ต้องการที่ว่าถ้าคุณทำงานอยู่กับรหัส (หรือย่อหน้าเยื้องหรือเนื้อหาใด ๆ ที่มีเจตนาที่อาจจะมีช่องว่างหลาย) ... pre
ดังนั้นฉันชอบ
overflow-wrap: normal
(เคยword-wrap
อยู่ในเบราว์เซอร์รุ่นเก่า) เป็นสิ่งจำเป็นในกรณีที่ผู้ปกครองบางคนเปลี่ยนการตั้งค่านั้น มันสามารถทำให้ห่อได้แม้ว่าpre
จะตั้งค่าแล้วก็ตาม
ยัง - ขัดกับคำตอบที่ได้รับการยอมรับในปัจจุบัน - textareas ไม่มักจะห่อโดยค่าเริ่มต้น pre-wrap
ดูเหมือนว่าจะเป็นค่าเริ่มต้นในเบราว์เซอร์ของฉัน
overflow-x: scroll
overflow: auto
แถบเลื่อนจะลดพื้นที่พิมพ์ที่มีอยู่ในพื้นที่ข้อความ นอกจากนี้ IE11 ยังแสดงแถบเลื่อนแนวตั้งโดยไม่จำเป็น แต่ให้overflow: auto
แก้ไข
โซลูชันที่ใช้ CSS ต่อไปนี้ใช้งานได้สำหรับฉัน:
<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>
ฉันพบวิธีสร้าง textarea ด้วยการทำงานทั้งหมดนี้ในเวลาเดียวกัน:
มันทำงานได้ดีบน:
ให้ฉันอธิบายวิธีการที่ฉันได้รับ: ฉันใช้เครื่องมือรวมตัวตรวจสอบ Chrome และฉันเห็นค่าในสไตล์ CSS ดังนั้นฉันจึงลองใช้ค่าเหล่านี้แทนค่าปกติ ... การทดลอง & ข้อผิดพลาดจนกว่าฉันจะลดลงเหลือน้อยที่สุดแล้ว สำหรับทุกคนที่ต้องการมัน
ในส่วน CSS ฉันใช้เพียงแค่นี้สำหรับ Chrome, Firefox, Opera และ Safari:
textarea {
white-space:nowrap;
overflow:scroll;
}
ในส่วน CSS ฉันใช้เพียงนี้สำหรับ IE:
textarea {
overflow:scroll;
}
มันค่อนข้างยุ่งยาก แต่ก็มี CSS
แท็ก HTML (x) เช่นนี้:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
และในตอนท้ายของ <head>
ส่วน JavaScript เช่นนี้:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
JavaScript ใช้สำหรับการทำให้ตัวตรวจสอบความถูกต้อง W3C ผ่าน XHTML 1.1 เข้มงวดเนื่องจากแอตทริบิวต์การตัดไม่เป็นทางการดังนั้นจึงไม่สามารถเป็น (x) แท็ก HTML โดยตรง แต่เบราว์เซอร์ส่วนใหญ่จัดการกับมันดังนั้นหลังจากโหลดหน้าเว็บ
หวังว่าจะสามารถทดสอบได้ในเบราว์เซอร์และรุ่นเพิ่มเติมและช่วยให้คนอื่นปรับปรุงมันและทำให้มันข้ามเบราว์เซอร์อย่างเต็มที่สำหรับทุกรุ่น
คำถามนี้ดูเหมือนจะเป็นคำถามยอดนิยมสำหรับการปิดใช้งานการtextarea
ตัดคำ อย่างไรก็ตามเมื่อวันที่เมษายน 2017 ฉันพบว่าIE 11 (11.0.9600) จะไม่ปิดการใช้งานการห่อคำด้วยวิธีการใด ๆ ข้างต้น
เพียงการแก้ปัญหาที่ไม่ทำงานสำหรับ IE wrap="off"
11 wrap="soft"
และ / หรือคุณลักษณะ CSS ต่าง ๆ เช่นwhite-space: pre
แก้ไขที่ IE 11 เลือกที่จะตัด แต่ก็ยังคงล้อมอยู่ที่ไหนสักแห่ง โปรดทราบว่าฉันมีการทดสอบนี้มีหรือไม่มีความเข้ากันได้ดู IE 11 นั้นใช้งานได้กับ HTML 5 แต่ไม่ได้อยู่ในกรณีนี้
ดังนั้นเพื่อให้ได้สายที่รักษาช่องว่างของพวกเขาและออกไปทางด้านขวามือที่ฉันใช้:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
โชคดีที่สิ่งนี้ดูเหมือนจะใช้ได้กับ Chrome & Firefox ด้วย ฉันไม่ได้ป้องกันการใช้งาน pre-HTML 5 wrap="off"
เพียงแค่บอกว่ามันดูเหมือนว่าจำเป็นสำหรับ IE 11
หากคุณสามารถใช้ JavaScript ต่อไปนี้อาจเป็นตัวเลือกพกพามากที่สุดในวันนี้ (ทดสอบ 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>
ดูเหมือนจะไม่มีวิธีแก้ปัญหา CSS แบบพกพาที่เป็นมาตรฐาน:
wrap
คุณลักษณะไม่ได้มาตรฐาน
white-space: pre;
ไม่ทำงานสำหรับ Firefox textarea
31 ซอ , คุณลักษณะเปิดคำขอ
นอกจากนี้หากคุณสามารถใช้ Javascript คุณอาจใช้โปรแกรมแก้ไข 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>
อาจใช้งานกับ ACE ได้เนื่องจากไม่ได้ใช้ตัวtextarea
ใดตัวหนึ่งที่มีการขีดเส้นใต้ / นำมาใช้อย่างต่อเนื่อง แต่ไม่แน่ใจว่ามีการใช้งานcontenteditable
หรือไม่