Omar Gonzales
Omar Gonzales

Reputation: 4008

Grid of cards from 4 to 3 on mobile devices?

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:

enter image description here

But won't resize properly so I cannot make the screen narrower (to a mobile device size):

enter image description here

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:

enter image description here

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

Answers (2)

lambdacoder
lambdacoder

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);
   } 
 }

Tablet view works

Mobile view works

Upvotes: 1

huan feng
huan feng

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

Related Questions