ฉันจะป้องกันไม่ให้ข้อความในบล็อก div ล้นออกมาได้หรือไม่
ฉันจะป้องกันไม่ให้ข้อความในบล็อก div ล้นออกมาได้หรือไม่
คำตอบ:
หากคุณต้องการให้ข้อความที่ล้นใน div ขึ้นบรรทัดใหม่โดยอัตโนมัติแทนที่จะซ่อนหรือสร้างแถบเลื่อนให้ใช้ไฟล์
word-wrap: break-word
คุณสมบัติ
คุณสามารถลอง:
<div id="myDiv">
stuff
</div>
#myDiv {
overflow:hidden;
}
ตรวจสอบเอกสารสำหรับคุณสมบัติล้นสำหรับข้อมูลเพิ่มเติม
คุณสามารถใช้คุณสมบัติ CSS text-overflow เพื่อตัดข้อความยาว ๆ
<div id="greetings">
Hello universe!
</div>
#greetings
{
width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis; // This is where the magic happens
}
อ้างอิง: http://makandracards.com/makandra/5883-use-css-text-overflow-to-truncate-long-texts
คุณสามารถควบคุมได้ด้วย CSS มีตัวเลือกไม่กี่ตัว:
หวังว่าจะช่วยได้
เพียงใช้สิ่งนี้:
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 */
มีคุณสมบัติ css อื่น:
white-space : normal;
คุณสมบัติพื้นที่สีขาวควบคุมวิธีจัดการข้อความบนองค์ประกอบที่นำไปใช้
div {
/* This is the default, you don't need to
explicitly declare it unless overriding
another declaration */
white-space: normal;
}
ลองเพิ่มคลาสนี้เพื่อแก้ไขปัญหา:
.ellipsis {
text-overflow: ellipsis;
/* Required for text-overflow to do anything */
white-space: nowrap;
overflow: hidden;
}
อธิบายเพิ่มเติมในลิงค์นี้http://css-tricks.com/almanac/properties/t/text-overflow/
overflow: scroll
? หรืออัตโนมัติ. ในแอตทริบิวต์สไตล์
ฉันเดาว่าคุณควรเริ่มต้นด้วยพื้นฐานจาก w3
https://www.w3schools.com/cssref/css3_pr_text-overflow.asp
div {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
หาก div ของคุณมีความสูงที่กำหนดไว้ใน css ซึ่งจะทำให้มันล้นออกมานอก div
คุณสามารถกำหนดความสูงขั้นต่ำของ div ได้ถ้าคุณต้องการให้ div มีความสูงต่ำสุดตลอดเวลา
ความสูงต่ำสุดจะใช้ไม่ได้ใน IE6 แต่ถ้าคุณมีสไตล์ชีตเฉพาะของ IE6 คุณสามารถกำหนดความสูงปกติสำหรับ IE6 ได้ ความสูงเปลี่ยนแปลงใน IE6 ตามเนื้อหาภายใน
คุณสามารถตั้งค่า min-width ใน css ได้เช่น:
.someClass{min-width: 980px;}
มันจะไม่แตกอย่างไรก็ตามคุณยังคงมีแถบเลื่อนให้จัดการ
คำแนะนำในการตรวจสอบว่าส่วนใดของ CSS ของคุณเป็นสาเหตุของปัญหา:
1) ตั้งค่าองค์ประกอบstyle="height:auto;"
ทั้งหมด<div>
แล้วลองใหม่อีกครั้ง
2) ตั้งค่าองค์ประกอบstyle="border: 3px solid red;"
ทั้งหมด<div>
เพื่อดูว่า<div>
กล่องของคุณใช้พื้นที่กว้างแค่ไหน
3) นำheight:#px;
คุณสมบัติcss ออกจาก CSS ของคุณและเริ่มต้นใหม่
ตัวอย่างเช่น:
<div id="I" style="height:auto;border: 3px solid red;">I
<div id="A" style="height:auto;border: 3px solid purple;">A
<div id="1A" style="height:auto;border: 3px solid green;">1A
</div>
<div id="2A" style="height:auto;border: 3px solid green;">2A
</div>
</div>
<div id="B" style="height:auto;border: 3px solid purple;">B
<div id="1B" style="height:auto;border: 3px solid green;">1B
</div>
<div id="2B" style="height:auto;border: 3px solid green;">2B
</div>
</div>
</div>
.NonOverflow {
width: 200px; /* Need the width for this to work */
overflow: hidden;
}
<div class="NonOverflow">
Long Text
</div>
!! โครตยากลุย !! ขึ้นอยู่กับรหัสรอบข้างและความละเอียดของหน้าจอซึ่งอาจนำไปสู่พฤติกรรมที่แตกต่าง / ไม่ต้องการ
หากส่วนเกินที่ซ่อนอยู่ไม่อยู่ในคำถามและจำเป็นต้องใช้ยัติภังค์ที่ถูกต้องคุณสามารถใช้เอนทิตี HTML ยัติภังค์แบบอ่อนที่คุณต้องการให้คำ / ข้อความแตก ด้วยวิธีนี้คุณจะสามารถกำหนดจุดแตกหักได้ด้วยตนเอง
­
ยัติภังค์จะปรากฏก็ต่อเมื่อคำต้องการแตกเพื่อไม่ให้ล้นคอนเทนเนอร์โดยรอบ
ตัวอย่าง:
<div class="container">
foo­bar
</div>
ผลลัพธ์ถ้าคอนเทนเนอร์กว้างพอและข้อความจะไม่ล้นคอนเทนเนอร์:
foobar
ผลลัพธ์ถ้าคอนเทนเนอร์มีขนาดเล็กและข้อความจะล้นคอนเทนเนอร์จริง:
foo-
bar
.container{
background-color: green;
max-width: 30px;
}
Example 1 - container to small => text overflows container:
<div class="container">
foobar
</div>
Example 2 - using soft hyphen => text breaks at predetermined break point:
<div class="container">
foo­bar
</div>
Example 3 - using soft hyphen => text still overflowing because the text before the soft hyphen is to long:
<div class="container">
foobar­foo
</div>
ข้อมูลเพิ่มเติม: https://en.wikipedia.org/wiki/Soft_hyphen