#html #css #bootstrap
Здравствуйте. Как сделать так, чтобы там, где я пометил красным, появлялась ссылка
"читать далее"? Т.е как установить лимит слов?
Ответы
Ответ 1
Как правильно заметил @AndreyFedorov , обрезку традиционно логично делают на стороне
сервера.
Но если очень хочется, то можно обрезать по словам и на клиенте с помощью javascript:
$(document).ready(function() {
var wordsToCut = 15;
var contentWrapper = $('div');
var contentText = contentWrapper.text();
contentText = contentText.split(' ').slice(0, wordsToCut).join(' ');
contentWrapper.text(contentText);
contentWrapper.append("... Читать далее");
});
div {
width:300px;
background: #EEE;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin pulvinar rhoncus
tempus. Mauris non velit vitae leo tempor fringilla sed quis mi. In dignissim ultrices
augue ut molestie. Maecenas venenatis auctor mauris. Integer a ex sit amet nibh ultricies
posuere. Integer suscipit dui augue. Donec finibus mi eget dapibus varius. In pulvinar
nec dolor eu rhoncus. Etiam volutpat pellentesque eros et euismod. Nam vitae mollis
sem. Suspendisse ornare enim libero, a ornare tortor suscipit quis. Nunc tincidunt
pretium ligula a finibus. Suspendisse cursus massa a convallis mattis. Integer consectetur
aliquam nisl, pretium mattis mi. Donec laoreet felis a ligula congue, tincidunt bibendum
dolor dignissim. Nam sodales imperdiet tincidunt. Vivamus eu lobortis nisi, sed sodales
nulla. Nullam quis hendrerit mauris. Vestibulum sollicitudin sit amet urna in viverra.
Vestibulum eros libero, elementum at vehicula eu, fringilla porta turpis. Curabitur
at elit at quam ultrices fermentum ut in turpis. Donec porta, turpis non fermentum
sollicitudin, dui purus tincidunt diam, ut euismod orci neque eget felis. Integer pharetra
pretium eros ut mattis. Nunc quam nisi, egestas eget dui vel, tempor efficitur tortor.
Но обрезать по количеству слов не всегда уместно, ведь в зависимости от жанра текста
в нём могут попадаться слова разной длины, потому результат не всегда предсказуем.
Потому на практике чаще обрезают по количеству символов, т.к. символы имеют приблизительно
одинаковую ширину и, соответственно, разные тексты тоже будут иметь приблизительно
одинаковую ширину:
$(document).ready(function() {
var lettersToCut = 140;
var contentWrapper = $('div');
var contentText = contentWrapper.text();
contentText = contentText.substr(0, lettersToCut);
contentWrapper.text(contentText);
contentWrapper.append("... Читать далее");
});
div {
width: 300px;
background: #EEE;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin pulvinar rhoncus
tempus. Mauris non velit vitae leo tempor fringilla sed quis mi. In dignissim ultrices
augue ut molestie. Maecenas venenatis auctor mauris. Integer a ex sit amet nibh ultricies
posuere. Integer suscipit dui augue. Donec finibus mi eget dapibus varius. In pulvinar
nec dolor eu rhoncus. Etiam volutpat pellentesque eros et euismod. Nam vitae mollis
sem. Suspendisse ornare enim libero, a ornare tortor suscipit quis. Nunc tincidunt
pretium ligula a finibus. Suspendisse cursus massa a convallis mattis. Integer consectetur
aliquam nisl, pretium mattis mi. Donec laoreet felis a ligula congue, tincidunt bibendum
dolor dignissim. Nam sodales imperdiet tincidunt. Vivamus eu lobortis nisi, sed sodales
nulla. Nullam quis hendrerit mauris. Vestibulum sollicitudin sit amet urna in viverra.
Vestibulum eros libero, elementum at vehicula eu, fringilla porta turpis. Curabitur
at elit at quam ultrices fermentum ut in turpis. Donec porta, turpis non fermentum
sollicitudin, dui purus tincidunt diam, ut euismod orci neque eget felis. Integer pharetra
pretium eros ut mattis. Nunc quam nisi, egestas eget dui vel, tempor efficitur tortor.
Ну а если задача стоит вроде "текст должен занимать заданный контейнер, не больше
и не меньше", тогда можно скрыть часть текста с помощью css:
div {
width: 300px;
height: 90px;
position: relative;
overflow: hidden;
background: #EEE;
}
div a {
width: 120px;
display: block;
position: absolute;
bottom: 0;
right:0;
background: #EEE;
text-align: right;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin pulvinar rhoncus
tempus. Mauris non velit vitae leo tempor fringilla sed quis mi. In dignissim ultrices
augue ut molestie. Maecenas venenatis auctor mauris. Integer a ex sit amet nibh ultricies
posuere. Integer suscipit dui augue. Donec finibus mi eget dapibus varius. In pulvinar
nec dolor eu rhoncus. Etiam volutpat pellentesque eros et euismod. Nam vitae mollis
sem. Suspendisse ornare enim libero, a ornare tortor suscipit quis. Nunc tincidunt
pretium ligula a finibus. Suspendisse cursus massa a convallis mattis. Integer consectetur
aliquam nisl, pretium mattis mi. Donec laoreet felis a ligula congue, tincidunt bibendum
dolor dignissim. Nam sodales imperdiet tincidunt. Vivamus eu lobortis nisi, sed sodales
nulla. Nullam quis hendrerit mauris. Vestibulum sollicitudin sit amet urna in viverra.
Vestibulum eros libero, elementum at vehicula eu, fringilla porta turpis. Curabitur
at elit at quam ultrices fermentum ut in turpis. Donec porta, turpis non fermentum
sollicitudin, dui purus tincidunt diam, ut euismod orci neque eget felis. Integer pharetra
pretium eros ut mattis. Nunc quam nisi, egestas eget dui vel, tempor efficitur tortor.
Читать далее