Reputation: 4008
I need to transform my grid of cards, so on mobile devices it only fits 3 in the width of the mobile device, but 4 on desktop and tablets.
Right now I have this:
But won't resize properly so I cannot make the screen narrower (to a mobile device size):
CodePen:
https://codepen.io/ogonzales/pen/abNQXLg
HTML Code:
<div class="row">
<p> Just spacing</p>
</div>
<div class="row">
<div class="col-md-8">
<section id="team">
<div class="container">
<div class="grid">
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div><div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://cdn.shopify.com/s/files/1/0408/5792/7834/files/08_Dota_2_140x175.jpg" alt="Avatar"
style="width:120px;height:120px;" />
</div>
<div class="flip-card-back">
<br />
<p>WR : 50%</p>
<p>PR : 50%</p>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-4">
<div class="row">
<div class="__range __range-step __range-step-popup">
<input value="1" type="range" max="4" min="1" step="1" list="ticks2">
<datalist id="ticks2">
<option value="1">Very bad</option>
<option value="2">Bad</option>
<option value="3">Good</option>
<option value="4">Excellent</option>
</datalist>
<output class="__range-output-square"></output>
</div>
</div>
<div class="row">
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1"
checked>
<label class="form-check-label" for="exampleRadios1">
Default radio
</label>
</div>
</div>
<div class="row">
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
<label class="form-check-label" for="exampleRadios2">
Second default radio
</label>
</div>
</div>
<div class="row">
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3"
disabled>
<label class="form-check-label" for="exampleRadios3">
Disabled radio
</label>
</div>
</div>
</div>
</div>
UPDATE 1:
Using suggested media queries, don't work:
Code edited:
/* Tablets */
@media(max-width: 768px) {
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
justify-items: center;
align-items: center;
grid-gap: 15px;
}
}
/* Mobile */
@media(max-width: 500px) {
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
justify-items: center;
align-items: center;
grid-gap: 15px;
}
}
Upvotes: 2
Views: 582
Reputation: 116
try using media queries to achieve your desired result.
<!-- Tablets -->
@media(max-width: 768px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
<!-- Mobile -->
@media(max-width: 500px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
This is how your final CSS should look
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
justify-items: center;
align-items: center;
grid-gap: 15px;
}
.flip-card {
border-style: hidden;
background-color: transparent;
width: 120px;
height: 120px;
perspective: 1000px;
}
.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.6s;
transform-style: preserve-3d;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
}
.flip-card:hover .flip-card-inner {
transform: rotateY(180deg);
}
.flip-card-front,
.flip-card-back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
}
.flip-card-front {
background-color: #bbb;
color: black;
}
.flip-card-back {
background-color: #222e36ef;
color: white;
transform: rotateY(180deg);
}
@media(max-width: 768px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
@media(max-width: 500px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
Upvotes: 1
Reputation: 8623
Remove the comment in above answer should work.
https://jsfiddle.net/68cwt19m/
@media(max-width: 768px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
Upvotes: 1