วิธีแก้ปัญหาการทำงานข้ามเบราว์เซอร์
ปัญหานี้ได้รับการรบกวนเรามานานหลายปี
เพื่อช่วยในทุกกรณีฉันได้วางแนวทาง CSS เท่านั้นและแนวทาง jQuery ในกรณี cats caveats เป็นปัญหา
นี่เป็นวิธีแก้ปัญหาCSS เพียงอย่างเดียวที่ฉันใช้ในการทำงานในทุกสถานการณ์ด้วยข้อแม้เล็กน้อย
พื้นฐานง่าย ๆ มันซ่อนการล้นของช่วงและตั้งค่าความสูงสูงสุดตามความสูงของเส้นตามที่แนะนำโดย Eugene Xa
จากนั้นก็มีคลาสหลอกหลังจาก div ที่บรรจุไว้ซึ่งวางจุดไข่ปลาไว้อย่างดี
คำเตือน
วิธีการแก้ปัญหานี้จะวางจุดไข่ปลาเสมอโดยไม่คำนึงถึงว่ามีความต้องการมันหรือไม่
หากบรรทัดสุดท้ายลงท้ายด้วยประโยคลงท้ายคุณจะลงท้ายด้วยจุดสี่จุด ...
คุณจะต้องมีความสุขกับการจัดข้อความชิดขอบ
จุดไข่ปลาจะอยู่ทางขวาของข้อความซึ่งอาจดูเลอะเทอะ
รหัส + ตัวอย่าง
jsfiddle
.text {
position: relative;
font-size: 14px;
color: black;
width: 250px; /* Could be anything you like. */
}
.text-concat {
position: relative;
display: inline-block;
word-wrap: break-word;
overflow: hidden;
max-height: 3.6em; /* (Number of lines you want visible) * (line-height) */
line-height: 1.2em;
text-align:justify;
}
.text.ellipsis::after {
content: "...";
position: absolute;
right: -12px;
bottom: 4px;
}
/* Right and bottom for the psudo class are px based on various factors, font-size etc... Tweak for your own needs. */
<div class="text ellipsis">
<span class="text-concat">
Lorem ipsum dolor sit amet, nibh eleifend cu his, porro fugit mandamus no mea. Sit tale facete voluptatum ea, ad sumo altera scripta per, eius ullum feugait id duo. At nominavi pericula persecuti ius, sea at sonet tincidunt, cu posse facilisis eos. Aliquid philosophia contentiones id eos, per cu atqui option disputationi, no vis nobis vidisse. Eu has mentitum conclusionemque, primis deterruisset est in.
Virtute feugait ei vim. Commune honestatis accommodare pri ex. Ut est civibus accusam, pro principes conceptam ei, et duo case veniam. Partiendo concludaturque at duo. Ei eirmod verear consequuntur pri. Esse malis facilisis ex vix, cu hinc suavitate scriptorem pri.
</span>
</div>
วิธีการ jQuery
ในความคิดของฉันนี้เป็นทางออกที่ดีที่สุด แต่ทุกคนไม่สามารถใช้ JS โดยพื้นฐานแล้ว jQuery จะตรวจสอบองค์ประกอบ. text ใด ๆ และหากมีตัวอักษรมากเกินกว่าค่าสูงสุดที่กำหนดไว้ล่วงหน้าก็จะตัดส่วนที่เหลือออกและเพิ่มจุดไข่ปลา
ไม่มีข้อควรระวังสำหรับวิธีการนี้ แต่ตัวอย่างรหัสนี้มีไว้เพื่อแสดงให้เห็นถึงแนวคิดพื้นฐานเท่านั้น - ฉันจะไม่ใช้สิ่งนี้ในการผลิตโดยไม่ปรับปรุงด้วยเหตุผลสองประการ:
1) มันจะเขียน html ภายในของ. elems แบบข้อความ ไม่ว่าจะจำเป็นหรือไม่ 2) ไม่มีการทดสอบเพื่อตรวจสอบว่า html ด้านในไม่มี elems ซ้อนกันดังนั้นคุณจึงต้องพึ่งพาผู้เขียนมาก ๆ ในการใช้. text อย่างถูกต้อง
แก้ไข
ขอบคุณสำหรับการจับ @markzzz
รหัส & ตัวอย่าง
jsfiddle
setTimeout(function()
{
var max = 200;
var tot, str;
$('.text').each(function() {
str = String($(this).html());
tot = str.length;
str = (tot <= max)
? str
: str.substring(0,(max + 1))+"...";
$(this).html(str);
});
},500); // Delayed for example only.
.text {
position: relative;
font-size: 14px;
color: black;
font-family: sans-serif;
width: 250px; /* Could be anything you like. */
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="text">
Old men tend to forget what thought was like in their youth; they forget the quickness of the mental jump, the daring of the youthful intuition, the agility of the fresh insight. They become accustomed to the more plodding varieties of reason, and because this is more than made up by the accumulation of experience, old men think themselves wiser than the young.
</p>
<p class="text">
Old men tend to forget what thought was like in their youth;
</p>
<!-- Working Cross-browser Solution
This is a jQuery approach to limiting a body of text to n words, and end with an ellipsis -->