bob17
bob17

Reputation: 133

Hide a column in Grid

I am trying to hide a column from my Grid with a media query. I would like to hide the first column:

#grid-services {
    display: grid;
    grid-template-columns: 1fr 4fr;
    grid-template-rows: 1fr 1fr 1fr;
    grid-template-areas:
      'iconp dicribep'
      'iconf dicribef'
      'iconq dicribeq';
    grid-gap: 10px;
  }
  @media (max-width: 777px) {
    #grid-services {
      display: grid;
      grid-template-columns: 1fr;
      grid-template-rows: 1fr 1fr 1fr;
      grid-template-areas:
        'dicribep'
        'dicribef'
        'dicribeq';
      grid-gap: 10px;

Why is it not working? Below is the full code:

.iconp {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
  /* grid-column: 1 / 2;
        grid-row: 1 / 2; */
  grid-area: 'iconp';
}

.iconf {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
  /* grid-column: 1 / 2;
        grid-row: 2 / 3; */
  grid-area: 'iconf';
}

.iconq {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
  /* grid-column: 1 / 2;
        grid-row: 3 / 4; */
  grid-area: 'iconq';
}

.dicribep {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 100%;
  height: 100px;
  /* grid-column: 2 / 3;
        grid-row: 1 / 2; */
  grid-area: 'dicribep';
}

.dicribef {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 100%;
  height: 100px;
  /* grid-column: 2 / 3;
        grid-row: 2 / 3; */
  grid-area: 'dicribef';
}

.dicribeq {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 100%;
  height: 100px;
  /* grid-column: 2 / 3;
        grid-row: 3 / 4; */
  grid-area: 'dicribeq';
}

#grid-services {
  display: grid;
  grid-template-columns: 1fr 4fr;
  grid-template-rows: 1fr 1fr 1fr;
  grid-template-areas: 'iconp dicribep' 'iconf dicribef' 'iconq dicribeq';
  grid-gap: 10px;
}

@media (max-width: 777px) {
  #grid-services {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    grid-template-areas: 'dicribep' 'dicribef' 'dicribeq';
    grid-gap: 10px;
  }
}

#grid-prices {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr;
  grid-template-areas: 'tenor' 'bass' 'valve';
  gap: 18px;
}

@media (max-width: 777px) {
  #grid-prices {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    gap: 18px;
    grid-template-areas: 'tenor' 'bass' 'valve';
    max-width: 250px;
    margin: auto;
  }
}
<script src="https://kit.fontawesome.com/4d720cea97.js" crossorigin="anonymous"></script>

<section class="feature" id="feature">
  <div id="grid-services">
    <div class="iconp"><i class="fas fa-ambulance"></i></div>
    <div class="dicribep">
      <h2>Premium Materials</h2>
      <p>
        Our trombones use the shiniest brass which is sourced locally. This will increase the longevity of your purchase.
      </p>
    </div>
    <div class="iconf"><i class="fas fa-baby-carriage"></i></div>
    <div class="dicribef">
      <h2>Fast Shipping</h2>
      <p>
        We make sure you recieve your trombone as soon as we have finished making it. We also provide free returns if you are not satisfied.
      </p>
    </div>
    <div class="iconq"><i class="fas fa-car"></i></div>
    <div class="dicribeq">
      <h2>Quality Assurance</h2>
      <p>
        For every purchase you make, we will ensure there are no damages or faults and we will check and test the pitch of your instrument.
      </p>
    </div>
  </div>
</section>

I would like when the screen is smaller than 777px, the first column of the grid to disappear.

Upvotes: 1

Views: 441

Answers (1)

Chris Happy
Chris Happy

Reputation: 7295

Your code is correct, except you need to remove the quotes around grid-area. (See below).

#how {
  width: 70vw;
  background-color: rgb(253, 253, 253);
  margin: auto;
  text-align: center;
}

.iconp {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
  /* grid-column: 1 / 2;
        grid-row: 1 / 2; */
  grid-area: iconp;
}

.iconf {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
  /* grid-column: 1 / 2;
        grid-row: 2 / 3; */
  grid-area: iconf;
}

.iconq {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
  /* grid-column: 1 / 2;
        grid-row: 3 / 4; */
  grid-area: iconq;
}

.dicribep {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 100%;
  height: 100px;
  /* grid-column: 2 / 3;
        grid-row: 1 / 2; */
  grid-area: dicribep;
}

.dicribef {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 100%;
  height: 100px;
  /* grid-column: 2 / 3;
        grid-row: 2 / 3; */
  grid-area: dicribef;
}

.dicribeq {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 100%;
  height: 100px;
  /* grid-column: 2 / 3;
        grid-row: 3 / 4; */
  grid-area: dicribeq;
}

#grid-services {
  display: grid;
  grid-template-columns: 1fr 4fr;
  grid-template-rows: 1fr 1fr 1fr;
  grid-template-areas: 'iconp dicribep' 'iconf dicribef' 'iconq dicribeq';
  grid-gap: 10px;
}

@media (max-width: 777px) {
  #grid-services {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    grid-template-areas: 'dicribep' 'dicribef' 'dicribeq';
    grid-gap: 10px;
  }
}
<script src="https://kit.fontawesome.com/4d720cea97.js" crossorigin="anonymous"></script>

<section class="feature" id="feature">
  <div id="grid-services">
    <div class="iconp"><i class="fas fa-ambulance"></i></div>
    <div class="dicribep">
      <h2>Premium Materials</h2>
      <p>
        Our trombones use the shiniest brass which is sourced locally. This will increase the longevity of your purchase.
      </p>
    </div>
    <div class="iconf"><i class="fas fa-baby-carriage"></i></div>
    <div class="dicribef">
      <h2>Fast Shipping</h2>
      <p>
        We make sure you recieve your trombone as soon as we have finished making it. We also provide free returns if you are not satisfied.
      </p>
    </div>
    <div class="iconq"><i class="fas fa-car"></i></div>
    <div class="dicribeq">
      <h2>Quality Assurance</h2>
      <p>
        For every purchase you make, we will ensure there are no damages or faults and we will check and test the pitch of your instrument.
      </p>
    </div>
  </div>
</section>

However, now you have elements in undefined regions.

You also need to hide the icons on smaller displays.

I also took the liberty to avoid repeated code by adding two other classes (icon and dicribe).

#how {
  width: 70vw;
  background-color: rgb(253, 253, 253);
  margin: auto;
  text-align: center;
}

.icon {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
}

.dicribe {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 100%;
  height: 100px;
}

/* Icons */
.iconp {
  grid-area: iconp;
}

.iconf {
  grid-area: iconf;
}

.iconq {
  grid-area: iconq;
}


/* dicribep */
.dicribep {
  grid-area: dicribep;
}

.dicribef {
  grid-area: dicribef;
}

.dicribeq {
  grid-area: dicribeq;
}

#grid-services {
  display: grid;
  grid-template-columns: 1fr 4fr;
  grid-template-rows: 1fr 1fr 1fr;
  grid-template-areas: 'iconp dicribep' 'iconf dicribef' 'iconq dicribeq';
  grid-gap: 10px;
}

@media (max-width: 777px) {
  .icon {  display: none;  }
  
  #grid-services {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    grid-template-areas: 'dicribep' 'dicribef' 'dicribeq';
  }
}
<script src="https://kit.fontawesome.com/4d720cea97.js" crossorigin="anonymous"></script>

<section class="feature" id="feature">
  <div id="grid-services">
    <div class="icon iconp"><i class="fas fa-ambulance"></i></div>
    <div class="dicribe dicribep">
      <h2>Premium Materials</h2>
      <p>
        Our trombones use the shiniest brass which is sourced locally. This will increase the longevity of your purchase.
      </p>
    </div>
    <div class="icon iconf"><i class="fas fa-baby-carriage"></i></div>
    <div class="dicribe dicribef">
      <h2>Fast Shipping</h2>
      <p>
        We make sure you recieve your trombone as soon as we have finished making it. We also provide free returns if you are not satisfied.
      </p>
    </div>
    <div class="icon iconq"><i class="fas fa-car"></i></div>
    <div class="dicribe dicribeq">
      <h2>Quality Assurance</h2>
      <p>
        For every purchase you make, we will ensure there are no damages or faults and we will check and test the pitch of your instrument.
      </p>
    </div>
  </div>
</section>

Upvotes: 1

Related Questions