Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Функция “читать далее” после определённого количества слов

#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.Читать далее


Комментариев нет:

Отправить комментарий