วิธีตัดคำข้อความใน HTML?


185

ข้อความแบบaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaที่เกินความกว้างของ a div(พูด200px) จะถูกห่อได้อย่างไร?

ฉันเปิดให้โซลูชันชนิดใดก็ได้เช่น CSS, jQuery เป็นต้น

คำตอบ:


240

ลองสิ่งนี้:

div {
    width: 200px;
    word-wrap: break-word;
}

1
ฉันเข้าใจผิดหรือคำว่า wrap เป็นความถูกต้องของ CSS3 หรือไม่?
Gab Royer

13
มันเป็น CSS3 แต่ใช้ได้กับเบราว์เซอร์กระแสหลักเกือบทั้งหมดรวมถึง IE5.5 -> 9 - caniuse.com/#search=word-wrap
Jon Hadley

32
เมื่อตัดคำ: แบ่งคำ; ไม่ทำงานลองแบ่งคำ: break-all; / * อันนี้เป็นนักฆ่า * /
redochka

@redochka แต่เมื่อใช้word-break: break-all;แล้วในข้อความปกติมันจะแบ่งคำที่อยู่ตรงกลางซึ่งน่าเกลียด ... เราไม่สามารถมีพฤติกรรมทั้งสองอย่างได้หรือไม่?
pawamoy

5
สำคัญ:มันเป็นและไม่ได้word-break: break-all word-wrap: break-allทำผิดพลาดง่าย
Simon_Weaver

58

บน bootstrap 3 ตรวจสอบให้แน่ใจว่า white-space ไม่ได้ถูกตั้งค่าเป็น 'nowrap'

div {
  width: 200px;
  word-break: break-all;
  white-space: normal;
}

ยิ่งใหญ่ ฉันลองใช้ตัวแบ่งคำ: break-all บนตัวแผง Twitter Bootstrap 3 แต่มันก็ไม่ได้ผล การเพิ่มพื้นที่สีขาว: ปกติคือการแก้ไข
coolboyjules

5
นีซฉันต้องการwhite-space: normal;ด้วยก่อนที่มันจะทำงาน
radbyx

56

คุณสามารถใช้ยัติภังค์แบบนิ่มดังนี้:

aaaaaaaaaaaaaaa­aaaaaaaaaaaaaaa

สิ่งนี้จะปรากฏเป็น

aaaaaaaaaaaaaaa-
aaaaaaaaaaaaaaa

ถ้ากล่องที่บรรจุมีขนาดไม่ใหญ่พอหรือเป็น

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

ถ้ามันเป็น.


18
แต่คุณจะรู้ได้อย่างไรว่าจะวางยัง­ไง
Kostas

คุณพูดเป็นคำยาว ๆ คุณสามารถรับข้อมูลนั้นโดยอัตโนมัติจากพจนานุกรมที่เหมาะสม
Kim Stebel

4
แต่แล้วพูดพล่อยๆเหมือนอย่างใดอย่างหนึ่งในตัวอย่าง? ตกลงไหมที่จะเปลี่ยนaaaaaa...aaaaaเป็นa­a­a­a­a­a­a...a­a­a­a?
Kostas

19
สิ่งที่ฉันกำลังมองหา ฉันชอบที่มันเกินไปอายที่จะทำอะไรจนกว่าจะมีการ ;-)
w00t

3
วิธีนี้ใช้งานได้ดีหากคำที่ต้องการห่อเป็น overly.long.java.package.name หรือสตริงที่คล้ายกันที่มีจุดจำนวนมาก จากนั้นคุณสามารถเพิ่มแท็ก & shy; หลังจากแต่ละจุด
dokaspar

28
   div {
    // set a width
    word-wrap: break-word
}

'การword-wrapแก้ปัญหา' ทำงานเฉพาะใน IE CSS3และเบราว์เซอร์ที่สนับสนุน

โซลูชันเบราว์เซอร์ข้ามที่ดีที่สุดคือการใช้ภาษาฝั่งเซิร์ฟเวอร์ของคุณ (php หรืออะไรก็ตาม) เพื่อค้นหาสตริงที่ยาวและวางไว้ในช่วงเวลาปกติเอนทิตี html เอนทิตี​ นี้จะแบ่งคำที่ยาวออกไปและทำงานบนเบราว์เซอร์ทั้งหมด

เช่น

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa​aaaaaaaaaaaaaaaaaaaaaaaaaaaaa

8
"วางไว้ข้างในพวกเขาในช่วงเวลาปกติ html entity # 8203" แต่เมื่อคุณพยายามที่จะคัดลอกข้อความและวางไว้ที่ไหนสักแห่งคุณจะมีตัวอักษร Unicode แบบสุ่มอยู่ตรงกลาง
user102008

9

อันเดียวที่ใช้ได้กับ IE, Firefox, chrome, Safari และ opera หากไม่มีช่องว่างในคำ (เช่น URL ที่ยาว) คือ:

div{
    width: 200px;  
    word-break: break-all;
}

ฉันพบสิ่งนี้เพื่อพิสูจน์กระสุน


9

สิ่งนี้ใช้ได้สำหรับฉัน

word-wrap: normal;
word-break: break-all;
white-space: normal;
display: block;
height: auto;
margin: 3px auto;
line-height: 1.4;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;

6

ตัวเลือกอื่นก็ใช้:

div
{
   white-space: pre-line;
}

สิ่งนี้จะกำหนดองค์ประกอบ div ทั้งหมดของคุณในเบราว์เซอร์ทั้งหมดที่รองรับCSS1 (ซึ่งเป็นเบราว์เซอร์ทั่วไปเกือบทั้งหมดเท่า IE 8)


หากคุณมี<pre>องค์ประกอบที่คุณต้องการห่อคำสิ่งนี้ใช้ได้word-breakหรือword-wrapไม่
พลูโต


2

เพิ่ม CSS นี้ในย่อหน้า

style="width:420px; 
min-height:15px; 
height:auto!important; 
color:#666; padding: 1%; 
font-size: 14px; 
font-weight: normal;
word-wrap: break-word; 
text-align: left" 

2
ฉันชอบtext-overflow:ellipsisมากที่สุดเท่าที่คนต่อไป แต่มันไม่ใช่คำตอบที่ถูกต้องสำหรับคำถามนี้ เขากำลังมองหาคำห่อหุ้มไม่ตัดทอนน้ำล้น
Spudley

1

ตัวอย่างจากCSS Trick :

div {
    -ms-word-break: break-all;

    /* Be VERY careful with this, breaks normal words wh_erever */
    word-break: break-all;

    /* Non standard for webkit */
    word-break: break-word;

    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

ตัวอย่างเพิ่มเติมที่นี่


0

โซลูชันฝั่งเซิร์ฟเวอร์ที่เหมาะกับฉันคือ: $message = wordwrap($message, 50, "<br>", true);ที่ไหน$messageคือตัวแปรสตริงที่มีคำ / ตัวอักษรที่จะแตก 50 คือความยาวสูงสุดของเซ็กเมนต์ใด ๆ ที่กำหนดและ"<br>"เป็นข้อความที่คุณต้องการแทรกทุกตัวอักษร (50)


4
วิธีการแก้ปัญหานี้จะไม่ทำงานหาก 50 เท่าของความกว้างของตัวอักษรมากกว่าความต้องการสูงสุด 200px เพียงแค่ใช้ฟังก์ชั่นซูมเบราว์เซอร์ของคุณและในที่สุดคุณจะได้เห็นมันทำลาย ...
dokaspar

0

ลองสิ่งนี้

div{
  display: block;
  display: -webkit-box;
  height: 20px;
  margin: 3px auto;
  font-size: 14px;
  line-height: 1.4;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

คุณสมบัติ text-overflow: จุดไข่ปลาเพิ่ม ... และที่ยึดบรรทัดแสดงจำนวนบรรทัด


0

ในเนื้อหา HTML ลอง:

<table>
    <tr>
        <td>
            <div style="word-wrap: break-word; width: 800px">
                Hello world, how are you? More text here to see if it wraps after a long while of writing and it does on Firefox but I have not tested it on Chrome yet. It also works wonders if you have a medium to long paragraph. Just avoid writing in the CSS file that the words have to break-all, that's a small tip.
            </div>
        </td>
    </tr>
</table>

ในส่วนของ CSS ลอง:

background-size: auto;

table-layout: fixed;


0

ฉันใช้ bootstrap รหัส html ของฉันดูเหมือน ..

<div class="container mt-3" style="width: 100%;">
  <div class="row">
    <div class="col-sm-12 wrap-text">
      <h6>
        text content
      </h6>
    </div>
  </div>
</div>

CSS

.wrap-text {
     text-align:justify;
}

Bootstrap มีtext-justifyคลาสดังนั้นคุณสามารถใช้แทน.wrap-text
barbsan



-2

ใช้word-wrap:break-wordแอตทริบิวต์พร้อมกับความกว้างที่ต้องการ ส่วนใหญ่ใส่ ความกว้างเป็นพิกเซลไม่ใช่เปอร์เซ็นต์

width: 200px;
word-wrap: break-word;

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