ครอบตัดข้อความยาวเกินไปภายใน div


86
<div style="display:inline-block;width:100px;">

very long text
</div>

วิธีใดก็ตามในการใช้ pure css เพื่อตัดข้อความที่ยาวเกินไปแทนที่จะแสดงในบรรทัดใหม่ถัดไปและแสดงสูงสุด 100px เท่านั้น

คำตอบ:


56
<div class="crop">longlong longlong longlong longlong longlong longlong </div>

นี่เป็นแนวทางหนึ่งที่เป็นไปได้ที่ฉันคิดได้

.crop {width:100px;overflow:hidden;height:50px;line-height:50px;}​

วิธีนี้ข้อความยาวจะยังคงตัด แต่จะไม่สามารถมองเห็นได้เนื่องจากการoverflowตั้งค่าและด้วยการตั้งค่าline-heightเดียวกันกับที่heightเราทำให้แน่ใจว่าจะแสดงเพียงบรรทัดเดียว

ดูการสาธิตที่นี่และคำอธิบายคุณสมบัติล้นพร้อมตัวอย่างแบบโต้ตอบ


1
ฉันจะไม่นับ "ความสูงบรรทัด" เพื่อป้องกันการตัดเนื่องจากอาจเป็นไปได้ว่าผู้ใช้เปลี่ยนการตั้งค่าแบบอักษร (สำหรับข้อความขนาดเล็ก) ในเบราว์เซอร์ ในทำนองเดียวกันสำหรับฟอนต์ขนาดใหญ่หากคุณกำหนดความสูงของ div เป็นจำนวนพิกเซลสิ่งนั้นอาจดูแย่มาก โดยเฉพาะอย่างยิ่งกับเบราว์เซอร์มือถือและหน้าจอ "เรตินา" ฉันจะพยายามปล่อยให้ความสูงของ div ยืดหยุ่นได้หากเค้าโครงการออกแบบอนุญาตซึ่งควรจะเป็น!
PJ Brunet

155

คุณสามารถใช้ได้:

overflow:hidden;

เพื่อซ่อนข้อความนอกโซน

โปรดทราบว่าอาจตัดตัวอักษรสุดท้าย (ดังนั้นส่วนหนึ่งของตัวอักษรสุดท้ายจะยังคงปรากฏอยู่) วิธีที่ดีกว่าคือการแสดงจุดไข่ปลาที่ส่วนท้าย คุณสามารถทำได้โดยใช้text-overflow:

overflow: hidden;
white-space: nowrap; /* Don't forget this one */
text-overflow: ellipsis;

white-space: nowrap ไม่จำเป็นจริงๆเพราะฉันมีหลายบรรทัดที่แสดงเส้นทางไฟล์ที่ยาว หากไม่มีช่องว่างสีขาวเส้นทางที่ยาวไม่แตกจะได้จุดไข่ปลาจากนั้นบรรทัดถัดไปจะแสดงส่วนที่เหลือของเส้นทาง นักเตะคือฉันสามารถคัดลอกข้อความ (รวมถึงจุดไข่ปลา) จากนั้นมันจะวางเส้นทางทั้งหมด ดี!
Robert Koch

ในกรณีที่คุณสงสัย (เหมือนที่ฉันเป็น) จุดไข่ปลาจะใช้ไม่ได้กับ Firefox เวอร์ชันเก่า "เนื่องจาก Firefox เวอร์ชัน 7 text-overflow: รองรับจุดไข่ปลา" stackoverflow.com/questions/5990414/…
PJ Brunet

จะเป็นอย่างไรหากคุณต้องการให้คำแนะนำเครื่องมือวางเมาส์เพื่อแสดงข้อความแบบเต็มหรือบางอย่างที่เหมือนกัน
pedrorijo91

2
@ pedrorijo91 คุณสามารถใช้title="full text goes here"ใน html
Jerry


9

ทำไมไม่ใช้หน่วยสัมพัทธ์?

.cropText {
    max-width: 20em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

4

โค้ดด้านล่างนี้จะซ่อนข้อความของคุณด้วยความกว้างคงที่ที่คุณต้องการ แต่ไม่ค่อยเหมาะสำหรับการออกแบบที่ตอบสนอง

.CropLongTexts {
  width: 170px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

อัปเดต

ฉันสังเกตเห็นในอุปกรณ์ (มือถือ) ว่าข้อความ (ผสม) ซึ่งกันและกันเนื่องจาก (ความกว้างคงที่) ...

.CropLongTexts {
  max-width: 170px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

(ความกว้างสูงสุด) ช่วยให้แน่ใจว่าข้อความจะถูกซ่อนไว้อย่างตอบสนองไม่ว่าจะเป็น (ขนาดหน้าจอ) และจะไม่ปะปนกัน


3
แม้ว่ารหัสนี้อาจตอบคำถาม แต่การให้บริบทเพิ่มเติมเกี่ยวกับสาเหตุและ / หรือวิธีที่รหัสนี้ตอบคำถามช่วยเพิ่มมูลค่าในระยะยาว
Donald Duck

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