@My1Name

Как скрыть/показать длинный текст в div-ном блоке?

Как правильно скрывать и показывать длинный текст по событию onClick?
У меня на странице есть div-ный блок с некоторым текстом:
<div id="123" class="panel-body truncate-text" onClick="showAd()">
<a href="#"><img src="/media/No-logo.png" class="advert-logo"></a>
<p>Тут какой-то текст длиной до 2000 символов, но нужно показывать до 200 символов. По событию onClick блок должен развернуться. А если блок развёрнутый - свернуться.</p>

Класс "panel-body" - это Bootstrap core CSS; "truncate-text" - добавленный мною CSS следующего вида:
.truncate-text {
  background: white;
  overflow: hidden;
  height: 140px;
  position: relative;
}

.truncate-text:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 30px;
  background: linear-gradient(180deg, transparent, white 50%);
}

Далее javascript:
showAd();
function showAd() {
    obj = document.getElementById("123").getElementsByClassName("truncate-text");
    if( obj.style.height == "140px" ) { obj.style.height = "100%"; } else { obj.style.display = "140px"; }
}

Но скрипт почему-то не срабатывает... Что нужно исправить, чтоб всё работало правильно?
  • Вопрос задан
  • 476 просмотров
Решения вопроса 1
@My1Name Автор вопроса
Немного погуглив, решение нашлось на qna.habr и по ссылке https://www.tune-it.ru/web/leksa/blog/-/blogs/3044392 — хороший пример оформления. В целом (моё) решение выглядит следующим образом:

HTML
<div class="truncate-text">
<p>Тут какой-то текст длиной до 2000 символов, но нужно показывать до 200 символов. По событию onClick блок должен развернуться. А если блок развёрнутый - свернуться.
</p>
</div>

CSS
.truncate-text{
  height: 130px;
  overflow: hidden;
  position: relative;
}
.truncate-text.opener {
  height: auto;
}
.truncate-text:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 40px;
  background: linear-gradient(180deg, transparent, white 50%);
}
.truncate-text.opener:after {
  opacity: 0;
}

Javascript (jQuery)
<script>
    $('.truncate-text').click(function(){
        $('.truncate-text').toggleClass('opener');
    });
</script>

Можно ещё добавитьcursor: pointer; в стили, но как по мне - это лишнее. Если текст не завершённый, обычно человек тыкает на него пальцем интуитивно :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы