'Size of divs in HTML
I want to reduce the size of these divs so that every row contain 3 cards at most. As I change the measurements in the CSS, it gets smaller and smaller. PS I'm not allowed to use Bootstrap! I tried using different measurements and also the grid feature but it was of no help.
This is the screenshot of the divs on my website
.locations .box-container {
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
grid-template-rows: auto;
}
.locations .box-container .box {
overflow: hidden;
box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.1);
border: 1rem solid #fff;
border-radius: 0.5rem;
flex: 1 1 30rem;
height: 25rem;
position: relative;
}
.locations .box-container .box img {
height: 100%;
width: 100%;
object-fit: cover;
}
.locations .box-container .box .card-body {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
text-align: center;
background: rgba(0, 0, 0, 0.7);
padding: 2rem;
padding-top: 5rem;
}
.locations .box-container .box .card-body .card-btn {
display: inline-block;
margin-top: 1rem;
background: orange;
color: #fff;
padding: 0.8rem 3rem;
border: 0.2rem solid orange;
cursor: pointer;
font-size: 1.7rem;
}
.locations .box-container .box .card-body .card-btn:hover {
border: 2px solid orange;
color: orange;
background: transparent;
transition: 0.4s ease;
}
.locations .box-container .box .card-body .card-btn:focus {
outline: none;
}
.locations .box-container .box .card-body h5 {
font-size: 2.5rem;
color: orange;
}
.locations .box-container .box .card-body p {
font-size: 1.5rem;
color: #eee;
padding: 0.5rem 0;
}
<section class="locations">
<h1>Locations</h1>
<p>"Adventure is out there."</p>
<br>
<div class="box-container">
<div class="box">
<div class="card">
<img src="./murree.jpg" alt="Murree, Pakistan">
<div class="card-body">
<h5>Murree</h5>
<p>Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="card-btn">View</a>
</div>
</div>
</div>
</div>
</section>
Solution 1:[1]
I simplified your HTML and CSS a bit, but this solution should work. This will give you 3 cards per row, and will fill the rows below it. I removed some of your styling for brevity, so you'll need to add that back, but this should give you the structure you need.
.locations .box-container
{
display: flex;
flex-wrap: wrap;
}
.locations .box-container .box
{
overflow: hidden;
box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.1);
border: 1rem solid #fff;
border-radius: 0.5rem;
height: 25rem;
flex: 1 0 25%;
margin: 0.5rem;
box-sizing: border-box;
}
.locations .box-container .box .card
{
height: 100%;
width: 100%;
text-align: center;
background: rgba(0, 0, 0, 0.7);
padding: 2rem;
}
.locations .box-container .card h5
{
font-size: 2.5rem;
color: orange;
}
.locations .box-container .card p
{
font-size: 1.5rem;
color: #eee;
padding: 0.5rem 0;
}
.locations .box-container .card a
{
display: inline-block;
margin-top: 1rem;
background: orange;
color: #fff;
padding: 0.8rem 3rem;
border: 0.2rem solid orange;
cursor: pointer;
font-size: 1.7rem;
}
<section class="locations">
<div class="box-container">
<div class="box">
<div class="card">
<h5>Title</h5>
<p>Card content.</p>
<a href="#">View</a>
</div>
</div>
<div class="box">
<div class="card">
<h5>Title</h5>
<p>Card content.</p>
<a href="#">View</a>
</div>
</div>
<div class="box">
<div class="card">
<h5>Title</h5>
<p>Card content.</p>
<a href="#">View</a>
</div>
</div>
<div class="box">
<div class="card">
<h5>Title</h5>
<p>Card content.</p>
<a href="#">View</a>
</div>
</div>
<div class="box">
<div class="card">
<h5>Title</h5>
<p>Card content.</p>
<a href="#">View</a>
</div>
</div>
</div>
</section>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Matthew M. |