Я пытаюсь сделать горизонтальную карту с ограниченной высотой и расширителем кнопок, чтобы убрать ограничение по высоте.
.col-4
должен содержать изображение с использованием object-fit:cover
.
.card-body
может содержать контент произвольной длины. Ее следует сочетать со ссылкой «Читать далее», чтобы увеличить высоту карточки.
Вот что у меня пока есть...
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet"/>
<!DOCTYPE html>
<html lang = "en">
<body>
<div class = "card mb-3" style = "height:200px">
<div class = "row g-0">
<div class = "col-4" style = "height:200px">
<img src = "https://dummyimage.com/400x700/000/fff" class = "img-fluid rounded-start object-fit-cover" style = "object-position: center; max-height: 100%;">
</div>
<div class = "col-8">
<div class = "card-body flex flex-column">
<div class = "long-content">
<p>
Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, turpis est aliquam turpis, at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, turpis est aliquam turpis,
</p>
<p>
at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, tur
</p><p>
at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, tur
</p><p>
at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, tur
</p>
</div>
<div class = "read-more">
Read more
</div>
</div>
</div>
</div>
</body>
</html>
Вы можете видеть, что .long-content
перекрывает изображение.
Установка .height
на уровне .card
ничего не дает — контент переполняется.
Изображение слева должно вписываться в любое предоставленное пространство — отсюда и мое заявление .object-fit-cover
. Хотя: обратите внимание на неприятную высоту, дублированную в родительском элементе. Если бы этого можно было избежать, это тоже было бы здорово.
Кроме того, контент должен растягиваться, и в идеале ссылка «Читать дальше» не должна отображаться, если контент не выходит за пределы.
Вы можете добавить overflow: hidden
(или .overflow-hidden
) с указанным max-height
к вашему long-content
:
.long-content {
max-height: 150px;
overflow: hidden;
}
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet"/>
<!DOCTYPE html>
<html lang = "en">
<body>
<div class = "card mb-3" style = "height:200px">
<div class = "row g-0">
<div class = "col-4" style = "height:200px">
<img src = "https://dummyimage.com/400x700/000/fff" class = "img-fluid rounded-start object-fit-cover" style = "object-position: center; max-height: 100%;">
</div>
<div class = "col-8">
<div class = "card-body flex flex-column">
<div class = "long-content">
<p>
Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, turpis est aliquam turpis, at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, turpis est aliquam turpis,
</p>
<p>
at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, tur
</p><p>
at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, tur
</p><p>
at fermentum magna metus vel odio. Nulla quis feugiat magna.Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt, libero eu scelerisque ullamcorper, tur
</p>
</div>
<div class = "read-more">
Read more
</div>
</div>
</div>
</div>
</body>
</html>
text-overflow: ellipsis
отобразит многоточие после усеченного содержимого.