มีวิธีการห่อคำยาว ๆ ใน div หรือไม่?


173

ฉันรู้ว่า Internet Explorer มีรูปแบบการตัดคำ แต่ฉันต้องการทราบว่ามีวิธีการข้ามเบราว์เซอร์ในการทำข้อความใน div หรือไม่

เฉพาะ CSS แต่ตัวอย่างโค้ด JavaScript ก็ใช้ได้เช่นกัน

แก้ไข: ใช่หมายถึงสายยาวไชโยคน!


7
การตัดคำเกิดขึ้นตามค่าเริ่มต้น คุณหมายถึงการห่อเมื่อไม่มีคำแยกหรือไม่?
Quentin

คำตอบ:


313

การอ่านความคิดเห็นดั้งเดิมรูเทอร์ฟอร์ดกำลังมองหาวิธีข้ามเบราว์เซอร์เพื่อตัดข้อความที่ไม่ขาดการเชื่อมต่อ

/* Source: http://snipplr.com/view/10979/css-cross-browser-word-wrap */
.wordwrap { 
   white-space: pre-wrap;      /* CSS3 */   
   white-space: -moz-pre-wrap; /* Firefox */    
   white-space: -pre-wrap;     /* Opera <7 */   
   white-space: -o-pre-wrap;   /* Opera 7 */    
   word-wrap: break-word;      /* IE */
}

ฉันใช้คลาสนี้มาสักพักแล้วและใช้งานได้อย่างมีเสน่ห์ (หมายเหตุ: ฉันทดสอบใน FireFox และ IE เท่านั้น)


โพสต์เก่า แต่ดูเหมือนจะไม่แสดงช่องว่างเมื่อ IE อยู่ในโหมด quirks
Jeremy

2
ฉันใช้ Firefox 24.6.0 และword-wrap: break-wordเป็นสิ่งที่ใช้งานได้จริง
user545424

3
Word-wrap: break-wordแม้ว่าที่สร้างขึ้นโดย Microsoft ตอนนี้เป็นส่วนหนึ่งของมาตรฐาน CSS 3 และเป็นเคล็ดลับอะไร :-)
Pascal_dher

38

คำตอบก่อนหน้าส่วนใหญ่ไม่ได้ผลสำหรับฉันใน Firefox 38.0.5 นี่มัน ...

<div style='padding: 3px; width: 130px; word-break: break-all; word-wrap: break-word;'>
    // Content goes here
</div>

เอกสารอ้างอิง:


2
ขอบคุณ! นี่เป็นคำตอบเดียวที่ใช้งานได้ (word-break: break-all; เป็นสิ่งที่ทำงานกับฉัน)
DaniCE


12

โซลูชันของ Aaron Bennet ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน แต่ฉันต้องลบบรรทัดนี้ออกจากรหัสของเขา -> white-space: -pre-wrap;เพราะมันทำให้เกิดข้อผิดพลาดดังนั้นรหัสการทำงานสุดท้ายจึงเป็นดังต่อไปนี้:

.wordwrap { 
   white-space: pre-wrap;      /* CSS3 */   
   white-space: -moz-pre-wrap; /* Firefox */   
   white-space: -o-pre-wrap;   /* Opera 7 */    
   word-wrap: break-word;      /* IE */
}

ขอบคุณมาก


1
Aaron Bennett พูดถึงคำตอบเดียวกันนี้เมื่อ 2 ปีก่อน สิ่งที่คุณทำที่นี่ไม่ได้เพิ่มคุณค่า
AaA

6
สวัสดีอย่างที่คุณเห็นถ้าคุณอ่านทั้งสองคำตอบอีกครั้งสิ่งที่ฉันกำลังพูดก็คือทางออกของแอรอนก็โอเค แต่ฉันได้รับข้อผิดพลาดในหนึ่งในบรรทัดที่เขาเขียนดังนั้นฉันจึงเปลี่ยนเป็นโซลูชันที่ใช้งานได้ ผม. บางทีฉันควรจะมีความคิดเห็นในคำตอบของเขาฉันรู้ว่ามันขอบคุณขอโทษและ
ฮิวโก้

ผมต้องเพิ่มนี้ "พื้นที่สีขาว: -pre ห่อ" และมันทำงาน :)
ราวี Khambhati

0

ในขณะที่ david กล่าวถึง DIV จะตัดคำตามค่าเริ่มต้น

หากคุณอ้างถึงสตริงข้อความที่ยาวมาก ๆ โดยไม่มีช่องว่างสิ่งที่ฉันทำคือการประมวลผลฝั่งเซิร์ฟเวอร์สตริงและแทรกช่วงว่าง:

thisIsAreallyLongStringThatIWantTo<span></span>BreakToFitInsideAGivenSpace

มันไม่ถูกต้องเนื่องจากมีปัญหาเกี่ยวกับการปรับขนาดแบบอักษรและอื่น ๆ ตัวเลือกการขยายทำงานถ้าภาชนะที่มีขนาดตัวแปร ถ้าเป็นคอนเทนเนอร์ความกว้างคงที่คุณสามารถไปข้างหน้าและแทรกตัวแบ่งบรรทัด


@ TomHert มันแปลกจริงๆ แม้ว่าดี IE มันไม่ทำงาน ที่กล่าวมานี้ถูกโพสต์เมื่อ 5 ปีที่แล้ว ตอนนี้ CSS3 มีตัวเลือกการตัดคำที่ดีกว่าที่ IE อาจรองรับdeveloper.mozilla.org/en-US/docs/Web/CSS/word-wrap
DA

ใช่ฉันรู้ว่าฉันเพิ่งตกใจกับความเรียบง่ายของวิธีแก้ปัญหานี้ที่ฉันต้องลอง :)
Tom Hert

0

คุณสามารถลองระบุความกว้างสำหรับ div ไม่ว่าจะเป็นพิกเซลเปอร์เซ็นต์หรือ EMS และ ณ จุดนั้น div จะยังคงความกว้างนั้นและข้อความจะถูกตัดโดยอัตโนมัติจากนั้นภายใน div


ลองตั้งค่าความกว้าง 10px ... จากนั้นใช้คำที่ยาวกว่า 10px
Paul Zahra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.