CSS Grid

Posted by neverset on February 7, 2021

CSS Grid is a web frontend grid system to divide elements into columns and rows, so no extra work of using positioning properties (top, right, left, bottom) is needed.

usage

#html
<html lang="en">
    <head>
    <meta charset=utf-8>
    <title>Demo Responsive CSS Grid Site</title>
    <link rel="stylesheet" href="/main.css">
    </head>

    <!-- Main body of the site where we have the container --> 

    <!-- this div contain all elements that will be visible on the screen -->

    <div class="container">     
    <nav>
        <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
        </ul>  
    </nav>
    <main><h2>A Demo Site showcasing CSS Grid</h2>
        <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Itaque pariatur possimus alias quod ratione incidunt dicta assumenda repudiandae optio eveniet, quisquam fuga! Nam eaque fuga similique quia, esse non libero?</p>
        <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Illo libero doloremque, eum quis laudantium hic iste ab sed ipsum veniam, quam dolor rem cupiditate corrupti aliquam repudiandae officia soluta impedit!</p>
    </main>
    <div class="sidebar img"><h2>Find Me on Social Media</h2>
        <p><a href="https://twitter.com/charliecodes">Twitter</a></p>
        <p><a href="https://www.linkedin.com/in/charleseteure/">LinkedIn</a></p>
    </div>
    <div class="about"><h2>About </h2>
        <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Deserunt voluptatem reprehenderit non. Magni sit alias quia, vel quidem autem quos optio quam at porro aliquid necessitatibus aut et eos nulla.</p>
    </div>
    <div class="contact"><h2>Contact</h2>
        <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Animi consequuntur magnam ipsum, commodi quam, non dolorem numquam veritatis, qui nam voluptas asperiores neque magni. Placeat, natus reprehenderit. Fugit, voluptatum commodi.</p>
    </div>
    <footer>Built with <3 by <a href="https://twitter.com/charliecodes">Charles Freeborn</a></footer>
    </div>
</html>

# css
body{
background: #F1F0EE;
margin: 0;
}

.container {
/* first, create a grid container */

display: grid;        

/* define the amount and size of each column. Here we define 4 columns with equal fractions  */

grid-template-columns: repeat(4, 1fr); 

/* create horizontal tracks as rows and here we create 4 rows with different sizes  */
grid-template-rows: 0.2fr 1.5fr 1.2fr 0.8fr; 


/* define where each element will be in the grid. We achieve this with grid-template-areas */

grid-template-areas:
    "nav nav nav nav"
    "main main main main"
    "about about about sidebar"
    "contact contact contact sidebar"
    "footer footer footer footer";

/* we can set gaps - gutters between the rows and columns*/

gap: 0.5rem;
height: 100vh;
font-weight: 800;
font-size: 12px;
color: #004d40;
text-align: center;
}
/* Styling the Nav starts here */

nav{
background-color: #3770F6;
grid-area: nav;
}

nav ul{
list-style: none;
font-size: 16px;
font-weight: bolder;
float: left;
}

li{
display: inline-block;
}

li a{
color: #ffffff;
}
/* Styling the Nav ends here */

a:hover{
color: #FF7F50;
}

main {
grid-area: main;
}

main h2 {
font-weight: bolder;
}

main p{
text-align: left;
}

.sidebar {
background: #D3D4D7;
grid-area: sidebar;
}

.about {
background: #D7D6D3;
grid-area: about;
}

.contact {
background: #BDBCBB;
grid-area: contact;
}


footer {
background-color: #3770F6;
grid-area: footer;
color: #ffffff;
}

footer a {
color: #ffffff;
}

a {
text-align: center;
display: block;
font-family: inherit;
text-decoration: none;
font-weight: bold;
margin: 1rem;
}

/* For */

@media only screen and (max-width: 550px) {
.container {
    grid-template-columns: 1fr;
    grid-template-rows: 0.4fr 0.4fr 2.2fr 1.2fr 1.2fr 1.2fr 1fr;
    grid-template-areas:
    "nav"
    "sidebar"
    "main"
    "about"
    "contact"
    "footer";
}
}