Вставить эллипс после определенного количества строк
Я пытаюсь отобразить только первые 5 строк текста. Проблема в том, что способ настройки текста - это несколько тегов <p>
в div, например
<div class="myText">
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
</div>
Я просмотрел много ответов на этом сайте, таких как этот, и этот и в в других местах, таких как http://codepen.io/martinwolf/pen/qlFdp и https://css-tricks.com/line-clampin/, но ни один из них не работает для этого случая, где мне понадобится эллипсис после последнего слова на последней строке, даже если он не достигнет конца строки, и есть несколько тегов <p>
.
Я использую JavaScript с Angular.
Ответы
Ответ 1
Да, вы можете использовать какой-то плагин, но эту логику не так уж сложно написать. Основное понятие заключается в том, чтобы уменьшить количество текста до его соответствия. Это звучит дорого, но на практике он отлично работает и при необходимости может быть оптимизирован.
// Populate an element with text so as to fit into height
function truncate(elt, content, height) {
function getHeight(elt) { return elt.getBoundingClientRect().height; }
function shorten(str) { return str.slice(0, -1); }
elt.style.height = "auto";
elt.textContent = content;
// Shorten the string until it fits vertically.
while (getHeight(elt) > height && content) {
elt.textContent = (content = shorten(content)) + '...';
}
}
Чтобы использовать это:
truncate(div, "Some very long text to be truncated", 200)
Чтобы использовать содержимое HTML, при необходимости адаптируйте/расширьте.
Ответ 2
Попробуйте плагин jQuery dotdotdot. URL: http://dotdotdot.frebsite.nl/
Я сделал образец кода в jsFiddle Link
Здесь код:
$(document).ready(function() {
$(".myText").dotdotdot();
});
p {
margin:0;
padding:0;
font:12px/15px Verdana, Geneva, Tahoma, Arial, Helvetica, sans-serif;
}
.myText {
height:75px; /* this needs to be the height of 5 lines of text. Here it is 15px (line-height of one line) * 5 = 75px */
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery.dotdotdot/1.7.2/jquery.dotdotdot.min.js"></script>
<div class="myText">
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
<p>some text</p>
</div>