Как скрыть лишний текст в блоке

Имеем несколько колонок с разным по длине текстом, нужно сделать их одинаковой высоты и скрыть лишнее.

HTML-разметка:

<div class="items">
	<div class="items-row">
		<h3>Блок #1</h3>
		<div class="items-text">
			Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
			Proin blandit magna eu tempus ullamcorper. Sed porta justo 
			sed nibh elementum condimentum.
		</div>
	</div>
	<div class="items-row">
		<h3>Блок #2</h3>
		<div class="items-text">
			Quisque non eros sit amet elit commodo maximus eget a eros. 
			Curabitur malesuada neque eu neque suscipit, sit amet efficitur 
			lorem pharetra. Curabitur et risus eu lacus lacinia convallis.
			Integer faucibus tellus sed congue finibus. Vestibulum eu felis 
			consectetur, blandit libero eu, vulputate neque. Cras et ex a 
			urna aliquam faucibus sed quis elit.
		</div>
	</div>
	<div class="items-row">
		<h3>Блок #3</h3>
		<div class="items-text">
			Etiam eu lorem sit amet mi bibendum auctor. Mauris nec risus 
			a erat rutrum blandit. Vivamus sodales erat sit amet nibh elementum egestas.
		</div>
	</div>
</div>
HTML

Первое что можно сделать, это установить высоту блока, а лишнее скрыть с помощью overflow: hidden.

.items-text {
	height: 62px;
	overflow: hidden;
}
CSS

Результат будет не очень информативный:

Свойство text-overflow: ellipsis добавляет многоточие к скрываемому тексту и работает только в паре с white-space: nowrap (отменяет переносы строк). Но можно сделать такой приём для нескольких строк текста с помощью свойств display: -webkit-box и -webkit-line-clamp: 4.

.items-text {
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
}
CSS

Результат:

В конец блока с текстом можно наложить абсолютный элемент с градиентом от прозрачного до белого, так получится эффект «затухания».

.items-text {
	overflow: hidden;
	position: relative;
	height: 62px;
}
.items-text:after {
	content: "";
	text-align: right;
	position: absolute;
	bottom: 0;
	right: 0;
	width: 70%;
	height: 1.2em;
	background: linear-gradient(to right, rgba(255, 255, 255, 0), white 100%);
	pointer-events: none;
}
CSS

Результат:

Второй вариант с затуханием сверху вниз:

.items-text {
	overflow: hidden;
	position: relative;
	height: 62px;
}
.items-text:after {
	content: "";
	text-align: right;
	position: absolute;
	bottom: 0;
	right: 0;
	left: 0;
	height: 1.2em;
	background: linear-gradient(to bottom, rgba(255, 255, 255, 0), white 100%);
	pointer-events: none;
}
CSS

Результат:

Если используется фоновое изображение, то подойдёт вариант с использованием background-clip: text – наложение изображения или градиента на текст.

.items-text {
	height: 70px;
	overflow: hidden;
	color: transparent;
	-webkit-background-clip: text;
	background-clip: text;
	background-image: linear-gradient(to bottom, #000, #000, rgba(0, 0, 0, 0));
}
CSS
15.04.2020, обновлено 21.02.2021
21891
Следующая запись Работа с архивами через SSH

Комментарии

, чтобы добавить комментарий.

Другие публикации

Текст в три колонки
Примеры, как вывести текст в три колонки одинаковой ширины и отступом между ними с помощью разных CSS-свойств.
7437
+1
Как преобразовать текст из textarea в параграфы HTML
Такой вопрос возникает при вставке текста из формы на сайт (отзывы, комментарии и т.д.) с форматированием элементом p.
3461
0
Преобразование строк в массив PHP
Примеры преобразования строк текста в массив по разным разделителям.
4846
+3
Стили для вложенных нумерованных списков ol
В продолжении темы нумерованных списков ol, пример стилизации и вывода нумерации вложенных элементов.
4805
+1
Переносы строк и тег BR в PHP
В PHP за перенос текста отвечают управляющие символы r (возврат каретки) и n (перевод строки), причем в разных операционных системах (на которых работает сервер) они применяются в разных комбинациях.
12996
+1
Contenteditable – текстовый редактор
Если добавить атрибут contenteditable к элементу, его содержимое становится доступно для редактирования пользователю, а...
23544
+29