html - Different height of CSS grid cells -


this question has answer here:

how can move "content" , "right" block responsive? problem can't use sub nested grid. don't need hacks: no margin-top because header can different height. no javascript. pure css. if @ possible.

enter image description here

now markup looks this:

.wrapper {    border: 1px solid red;    display: grid;    grid-template-columns: 1fr 2fr 1fr;    grid-template-areas:            "aside header header"            "left content right";    grid-gap: 15px;  }    .header, .aside, .left, .content, .right {    border: 1px solid black;    padding: 10px;  }    .header {    grid-area: header;    height: 30px; /* in real case it's responsive height */  }    .aside {    grid-area: aside;    height: 80px; /* in real case it's responsive height */  }    .left {    grid-area: left;  }    .content {    grid-area: content;    background: yellow;  }    .right {    grid-area: right;    background: yellow;  }    .left, .content, .right {    height: 100px; /* in real case it's responsive height */  }
<div class="wrapper">     <!-- order should on mobile -->     <header class="header">header</header>     <aside class="aside">aside</aside>     <div class="left">left</div>     <div class="content">content</div>     <div class="right">right</div>  </div>

a solution (using css only) adding row grid-template-areas:

.wrapper {    border: 1px solid red;    display: grid;    grid-template-columns: 1fr 2fr 1fr;    grid-template-areas:            "aside header header"            "aside content right"            "left content right";    grid-gap: 15px;    }    .header, .aside, .left, .content, .right {    border: 1px solid black;    padding: 10px;  }    .header {    grid-area: header;    height:30px; /* in real case it's responsive height */  }    .aside {    grid-area: aside;    height: 80px; /* in real case it's responsive height */  }    .left {    grid-area: left;  }    .content {    grid-area: content;    background: yellow;    }    .right {    grid-area: right;    background: yellow;  }    .left, .content, .right {    height: 100px; /* in real case it's responsive height */  }
<div class="wrapper">     <!-- order should on mobile -->     <header class="header">header</header>     <aside class="aside">aside</aside>     <div class="left">left</div>     <div class="content">content</div>     <div class="right">right</div>  </div>


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -