Разной длины текст в блоке толкает контент
Всем привет, ребят, подскажите, есть три блока, в котором есть текст разной длины, нужно сделать так, чтобы если в одном текст длиннее, то и в остальных двух блока одинаково толкался контент, для понимаю прикладываю ссылку на кодпен и скрин
пример
* {
margin: 0;
padding: 0;
}
.wrapper {
display: flex;
}
.col {
width: 360px;
padding: 16px;
border-radius: 8px;
border: 1px solid red;
display: flex;
flex-direction: column;
justify-content: space-between;
& + .col {
margin-left: 24px;
}
}
.header {
background-color: lightgreen;
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
}
.main {
height: 100%;
display: flex;
flex-direction: column;
padding: 4px;
background-color: lightblue;
}
.button {
display: flex;
align-items: center;
padding: 4px 8px;
// width: 100%;
height: 20px;
background-color: orange;
border-radius: 4px;
margin-top: auto;
}
.list {
display: flex;
flex-direction: column
}
.content {
display: flex;
flex-direction: column;
height: 100%;
}
<div class="wrapper">
<div class="col">
<div class="header">
<p>Title 1</p>
<div class="content">
<p>Some text long Some text long Some text long Some text long Some text long Some</p>
<div class="button">
Click me
</div>
</div>
</div>
<div class="main">
<div class="list">
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
</div>
</div>
</div>
<div class="col">
<div class="header">
<p>Title 2</p>
<div class="content">
<p>Some text long Some text long</p>
<div class="button">
Click me
</div>
</div>
</div>
<div class="main">
<div class="list">
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
</div>
</div>
</div>
<div class="col">
<div class="header">
<p>Title 3</p>
<div class="content">
<p>Some text long Some text </p>
<div class="button">
Click me
</div>
</div>
</div>
<div class="main">
<div class="list">
<span>1</span>
<span>1</span>
<span>1</span>
</div>
</div>
</div>
</div>
Ответы (1 шт):
Автор решения: Alexey Vladimirov
→ Ссылка
В общем, идея такая: делаем grid-лейаут и добавляем .col { display:contents }, чтобы сохранить вашу семантику карточек. Красную рамочку рисуем у наследников .col — из двух частей (верхней и нижней):
* {
margin: 0;
padding: 0;
}
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-flow: column;
gap: 0 10px;
}
.col {
display:contents;
}
.header {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
padding:10px 10px 0 10px;
border-color:red;
border-width:1px 1px 0 1px;
border-style: solid;
border-radius: 8px 8px 0 0;
box-sizing: border-box;
}
.header > p { background-color: lightgreen; padding: 10px 10px 0 10px }
.main {
height: 100%;
display: flex;
flex-direction: column;
grid-row-start: 2;
justify-content: stretch;
border-color:red;
border-width:0 1px 1px 1px;
border-style: solid;
padding: 0 10px 10px 10px;
border-radius: 0 0 8px 8px;
box-sizing: border-box;
}
.button {
display: flex;
align-items: center;
padding: 4px 8px;
// width: 100%;
height: 20px;
background-color: orange;
border-radius: 4px;
margin-top: auto;
position:relative;
bottom:-4px;
}
.list {
display: flex;
flex-direction: column;
background-color: lightblue;
flex-grow:1;
padding:10px;
}
.content {
display: flex;
flex-direction: column;
height: 100%;
background-color: lightgreen;
}
.content > p { padding:10px; }
<div class="wrapper">
<div class="col">
<div class="header">
<p>Title 1</p>
<div class="content">
<p>Some text long Some text long Some text long Some text long Some text long Some</p>
<div class="button">
Click me
</div>
</div>
</div>
<div class="main">
<div class="list">
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
</div>
</div>
</div>
<div class="col">
<div class="header">
<p>Title 2</p>
<div class="content">
<p>Some text long Some text long</p>
<div class="button">
Click me
</div>
</div>
</div>
<div class="main">
<div class="list">
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
<span>1</span>
</div>
</div>
</div>
<div class="col">
<div class="header">
<p>Title 3</p>
<div class="content">
<p>Some text long Some text </p>
<div class="button">
Click me
</div>
</div>
</div>
<div class="main">
<div class="list">
<span>1</span>
<span>1</span>
<span>1</span>
</div>
</div>
</div>
</div>