Reputation: 430
How can I fix height of given card according to data content in it.
Here is my HTML code:
<div class="parentOfCards">
<div class="dataCard" *ngFor='let item of Weekly | async' style="height: auto;">
<div style="border: 1px solid #707070; border-bottom: 0;">
<div class="cardTitles" style="padding: 0 5%;">{{item.name}}</div>
<br>
<div class="cardTitles" style="padding: 0 5%; font-size: 1em;">{{item.time.toString().slice(0,21)}}</div>
<br>
</div>
<div style="height: 50px; display: grid; grid-template-columns: 1fr 1fr;">
<button style="border: 1px solid #707070; padding: 13px; background: none;"> Edit</button>
<button style="border: 1px solid #707070; padding: 13px; border-left: 0; background: none;"> Delete</button>
</div>
</div>
</div>
CSS code:
.parentOfCards {
width: 1380px;
margin: auto;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
.dataCard {
height: auto;
width: 350px;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
margin: 10px auto;
}
Here is the current output of my code: In the first row, first two cards not having enough content are also as lengthy as third card. However, in second row all of the card are having same length content so it looks perfect. How can I achieve dynamic height over here in first row as well?
Upvotes: 0
Views: 308
Reputation: 5880
Set display: flex;
on .dataCard
and set flex: 1;
on cards content:
.parentOfCards {
width: 1380px;
margin: auto;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
.dataCard {
height: auto;
width: 350px;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
margin: 10px auto;
display: flex;
flex-direction: column;
}
.dataCard-content {
flex: 1;
height: 100%;
border: 1px solid #707070;
border-bottom: 0;
}
<div class="parentOfCards">
<div class="dataCard">
<div class="dataCard-content">
<div class="cardTitles" style="padding: 0 5%;">Name 1</div>
<br>
<div class="cardTitles" style="padding: 0 5%; font-size: 1em;">Time 1</div>
<br>
</div>
<div style="height: 50px; display: grid; grid-template-columns: 1fr 1fr;">
<button style="border: 1px solid #707070; padding: 13px; background: none;"> Edit</button>
<button style="border: 1px solid #707070; padding: 13px; border-left: 0; background: none;"> Delete</button>
</div>
</div>
<div class="dataCard">
<div class="dataCard-content">
<div class="cardTitles" style="padding: 0 5%;">Name 2</div>
<br>
<div class="cardTitles" style="padding: 0 5%; font-size: 1em;">Time 2</div>
<br>
</div>
<div style="height: 50px; display: grid; grid-template-columns: 1fr 1fr;">
<button style="border: 1px solid #707070; padding: 13px; background: none;"> Edit</button>
<button style="border: 1px solid #707070; padding: 13px; border-left: 0; background: none;"> Delete</button>
</div>
</div>
<div class="dataCard">
<div class="dataCard-content">
<div class="cardTitles" style="padding: 0 5%;">Name 3</div>
<br>
<div class="cardTitles" style="padding: 0 5%; font-size: 1em;">Time 3, with very long description that wraps to another line</div>
<br>
</div>
<div style="height: 50px; display: grid; grid-template-columns: 1fr 1fr;">
<button style="border: 1px solid #707070; padding: 13px; background: none;"> Edit</button>
<button style="border: 1px solid #707070; padding: 13px; border-left: 0; background: none;"> Delete</button>
</div>
</div>
</div>
Upvotes: 1