HTML - лучше использовать «продолжить чтение»

0

Есть ли способ в HTML добавить ссылку "продолжить чтение" в середине сообщения в блоге, которое отображает остальную часть сообщения, не переходя на другую страницу. Например, читатель нажимает "продолжить чтение", и остальная часть сообщения появляется только под ним, без необходимости загружать сообщение.

Пример: https://www.goodreads.com/book/show/6404873-penelope-and-the-preposterous-birthday-party

Кнопка "больше не принимает вас нигде, просто работает на странице.

благодаря

  • 2
    просто работает на странице ... показывает скрытый <span> (который увеличит его контейнер <div> ).
  • 0
    Единственная проблема, с которой я сталкиваюсь, это когда у вас также есть комментарии, тогда страница станет слишком длинной или потребуется еще один клик, чтобы отобразить комментарии, если вы их скрываете.
Теги:

1 ответ

1

просто работает внутри страницы... показывая скрытый <span> (который сделает контейнер <div> увеличивать его высоту).

Довольно наивная реализация (я буду использовать jQuery) будет:

<div>
    This is a very long post. You read only first paragraph
    but there is much more.
    <a href="#" id="expand-post">Continue reading</a>
    <span id="extra-text" style="display: none">
        You see? I had much more to say about this topic.
    </span>
</div>

С помощью этого JavaScript:

$("#expand-post").click(function () {
    $(this).hide();
    $("#extra-text").show();
});

Теперь мы можем сделать лучше, этот код довольно легко стать более общим. Позвольте сделать это шаг за шагом. Firt из всех пусть удалить эти уродливые идентификаторы, учитывая общую структуру, как это:

<div>
    Preview text.<a href="# class="expand-post">Continue reading</a>
    <span style="display:none">Complete text.</span>
</div>

Вы можете иметь тот же результат, если предположить, что элемент <span> всегда после нажатия <a>:

$(".expand-post").click(function () {
    $(this).hide().next().show();
});

Это работает, но текст может поступать из БД, тогда вы не можете настроить такую разметку. Позвольте сделать еще один шаг, чтобы упростить его использование (ограничен простым текстом, но он может быть исправлен и для работы с HTML). На самом деле вам не нужно вручную разделять текст с помощью этой разметки:

<div class="split-text">
    This is a very long text. You'll see a preview only but with a simple
    click you can read the full text. As you can see it can be done with
    few JavaScript lines. 
<div>

И этот JavaScript вы получите тот же результат (длина текста предварительного просмотра установлена равной 32, но это произвольно, обратите внимание, что это полностью непроверено):

$(".split-text").each(function (index, element)) {
    var fullText = $(this).text();
    far previewText = fullText.substr(0, 32);

    $(element).empty()
        .append($("<span>").text(previewText)).one("click", function () {
            $(this).replaceWith($("<span>").text(fullText));
        });;
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню