बस एक त्वरित मूल विचार है।
मैं निम्नलिखित मार्कअप के साथ परीक्षण कर रहा था:
<div id="fos">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis et dui. Nunc porttitor accumsan orci id luctus. Phasellus ipsum metus, tincidunt non rhoncus id, dictum a lectus. Nam sed ipsum a lacus sodales eleifend. Vestibulum lorem felis, rhoncus elementum vestibulum eget, dictum ut velit. Nullam venenatis, elit in suscipit imperdiet, orci purus posuere mauris, quis adipiscing ipsum urna ac quam.</p>
</div>
और सीएसएस:
#fos { width: 300px; height: 190px; overflow: hidden; }
#fos p { padding: 10px; margin: 0; }
इस jQuery को लागू करने से वांछित परिणाम प्राप्त होगा:
var $p = $('#fos p');
var divh = $('#fos').height();
while ($p.outerHeight() > divh) {
$p.text(function (index, text) {
return text.replace(/\W*\s(\S)*$/, '...');
});
}
यह बार-बार पाठ के अंतिम शब्द को हटाने की कोशिश करता है जब तक कि यह वांछित आकार तक नहीं पहुंच जाता। अतिप्रवाह के कारण: छिपा हुआ; यह प्रक्रिया अदृश्य बनी हुई है और यहां तक कि जेएस बंद होने के बाद भी परिणाम 'नेत्रहीन सही' ("..." के बिना) रहता है।
यदि आप इसे सर्वर-साइड पर एक समझदार ट्रंकेशन के साथ जोड़ते हैं (जो केवल एक छोटा ओवरहेड छोड़ता है) तो यह क्विकली रन करेगा :)।
फिर, यह एक पूर्ण समाधान नहीं है, सिर्फ एक विचार है।
अद्यतन: एक jsFiddle डेमो जोड़ा गया ।