grid
Responsive grid with CSS Grids
by Oleh Kotsubko
HTML
<h1>area</h1>
<ul class="b-area">
<li class="item-a">A</li>
<li class="item-b">B</li>
<li class="item-c">C</li>
<li class="item-d">D</li>
</ul>
<div class="info">Resize this panel to see grids respond</div>
<h1>auto-fill</h1>
<ul class="b-auto-fill">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
<li>F</li>
</ul>
<div class="info">Resize this panel to see grids respond</div>
<h1>auto-fit</h1>
<ul class="b-auto-fit">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
<li>F</li>
</ul>
<div class="info">Resize this panel to see grids respond</div>
<div class="author">
<div class="author__avatar">
<img
class="author__photo"
src="https://picsum.photos/100"
alt=""
>
</div>
<div class="author__text">
<p class="author__name">Deff</p>
<p class="author__status">Capitan</p>
</div>
</div>
SCSS
body {
padding: 20px;
font-family: sans-serif;
background-color: #20262e;
}
h1 {
font-size: 28px;
font-weight: bold;
margin: 28px 0;
color: #fff;
}
ul {
display: grid;
}
li {
background-color: #fff;
border-radius: 3px;
padding: 20px;
font-size: 14px;
}
.info {
text-align: center;
font-size: 13px;
padding-top: 20px;
color: #fff;
margin-bottom: 30px;
}
.b-auto-fill {
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
grid-gap: 10px;
}
.b-auto-fit {
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
grid-gap: 10px;
}
.b-area {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 10px;
grid-template-areas:
"header header header header"
"main . . sidebar"
"footer footer footer footer";
}
.item-a {
grid-area: header;
}
.item-b {
grid-area: main;
}
.item-c {
grid-area: sidebar;
}
.item-d {
grid-area: footer;
}
.author {
display: inline-grid;
grid-template-columns: 50px auto;
grid-column-gap: 8px;
align-items: center;
color: #fff;
&__avatar {
width: 50px;
height: 50px;
overflow: hidden;
border-radius: 50%;
}
&__photo {
max-width: 100%;
vertical-align: middle;
}
&__name {
font-size: 16px;
font-weight: bold;
}
&__status {
font-size: 12px;
}
}