Hello Devs, for this tutorial we’re going to make bottom navigation with just HTML/CSS. As for the icon, we’re going to use some of the icons from iconify
Create our HTML
To start our project we need to create a file called index.html
. Inside our index.html
there’s an import link to iconify for our icons, two files CSS called base.css
and bottomnav.css
, and of course our .bottomnav
.
Inside the .bottomnav
, there are four a href
tags with a class .active
for if the link is active. Inside each of the a href
tag, there’s an icon and the name of the a href
inside the span
tag.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bottomnav</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<script src="https://code.iconify.design/iconify-icon/1.0.2/iconify-icon.min.js"></script>
<link rel="stylesheet" href="./css/base.css" />
<link rel="stylesheet" href="./css/bottomnav.css" />
</head>
<body>
<main>
<h1>Classic Bottom Navigation</h1>
<div class="container">
<section>
<div class="bottomnav">
<a href="" class="active">
<iconify-icon
icon="material-symbols:home-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>Home</span>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:favorite-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>Favorite</span>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:search-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>Search</span>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:person-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>User</span>
</a>
</div>
</section>
</div>
</main>
</body>
</html>
Now our index.html
should look like this.
Add our CSS.
/* base.css */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
* {
font-family: 'Poppins', sans-serif;
}
h3,
p {
margin: 0;
}
body {
padding: 0;
margin: 0;
background-color: #f1f6ff;
}
.container {
padding: 24px;
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 24px;
}
h1 {
text-align: center;
margin-bottom: 0;
}
/* bottomnav.css */
.bottomnav {
display: flex;
justify-content: space-between;
background-color: #ffffff;
box-shadow: 0px -5px 40px rgba(66, 134, 239, 0.1);
width: calc(100vw / 3 - 96px);
padding: 12px;
}
.bottomnav a {
display: flex;
flex-direction: column;
align-items: center;
text-decoration: none;
font-size: 12px;
font-weight: 500;
padding: 0 7px;
color: #212121;
}
.bottomnav .bottomnav-icon {
font-size: 24px;
}
.bottomnav a:hover {
color: #0085ff;
}
.bottomnav a.active {
color: #0085ff;
}
After we add our CSS it should look like this.
Create Bottom Navigation with CTA
For this .bottomnav
, there are four a href
tag with a class .active
for if the link is active and one a href
tag with a class attribute called .bottomnav-cta
. Inside each of the a href
tag other then the .bottomnav-cta
, there’s an icon and the name of the a href
inside the span
tag. For the .bottomnav-cta
, there’s no text and just an icon. Here’s the code to create our bottom navigation.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bottomnav</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<script src="https://code.iconify.design/iconify-icon/1.0.2/iconify-icon.min.js"></script>
<link rel="stylesheet" href="./css/base.css" />
<link rel="stylesheet" href="./css/bottomnav.css" />
</head>
<body>
<main>
<h1>Bottom Navigation with CTA</h1>
<div class="container">
<section>
<div class="bottomnav">
<a href="" class="active">
<iconify-icon
icon="material-symbols:home-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>Home</span>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:favorite-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>Favorite</span>
</a>
<a href="" class="bottomnav-cta">
<iconify-icon
icon="tabler:square-rounded-plus"
class="bottomnav-icon"
></iconify-icon>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:search-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>Search</span>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:person-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
<span>User</span>
</a>
</div>
</section>
</div>
</main>
</body>
</html>
/* bottomnav.css */
.bottomnav {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #ffffff;
box-shadow: 0px -5px 40px rgba(66, 134, 239, 0.1);
width: calc(100vw / 3 - 96px);
padding: 12px;
}
.bottomnav a {
display: flex;
flex-direction: column;
align-items: center;
text-decoration: none;
font-size: 12px;
font-weight: 500;
padding: 0 7px;
color: #212121;
}
.bottomnav .bottomnav-icon {
font-size: 24px;
}
.bottomnav .bottomnav-cta {
color: #dfeffd;
background-color: #0085ff;
padding: 12px;
border-radius: 50%;
}
.bottomnav .bottomnav-cta .bottomnav-icon {
font-size: 22px;
}
.bottomnav .bottomnav-cta .bottomnav-icon {
color: #dfeffd;
}
.bottomnav a:hover {
color: #0085ff;
}
.bottomnav a.active {
color: #0085ff;
}
Here’s the preview for our bottom nav with CTA.
Create Levitating Bottom Navigation
For our levitating bottom navigation, it’s basically the same as our classic bottom navigation except without link text and has a rounded border similar to the pills component. Here’s the code to create one.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bottomnav</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<script src="https://code.iconify.design/iconify-icon/1.0.2/iconify-icon.min.js"></script>
<link rel="stylesheet" href="./css/base.css" />
<link rel="stylesheet" href="./css/bottomnav.css" />
</head>
<body>
<main>
<h1>Levitating Bottom Navigation</h1>
<div class="container">
<section>
<div class="bottomnav">
<a href="" class="active">
<iconify-icon
icon="material-symbols:home-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:favorite-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:search-rounded"
class="bottomnav-icon"
></iconify-icon>
</a>
<a href="" class="">
<iconify-icon
icon="material-symbols:person-outline-rounded"
class="bottomnav-icon"
></iconify-icon>
</a>
</div>
</section>
</div>
</main>
</body>
</html>
.bottomnav {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #ffffff;
box-shadow: 0px -5px 40px rgba(66, 134, 239, 0.1);
width: calc(100vw / 3 - 96px);
padding: 12px;
border-radius: 25px;
}
.bottomnav a {
display: flex;
flex-direction: column;
align-items: center;
text-decoration: none;
font-size: 12px;
font-weight: 500;
padding: 0 7px;
color: #212121;
}
.bottomnav .bottomnav-icon {
font-size: 24px;
}
.bottomnav a:hover {
color: #0085ff;
}
.bottomnav a.active {
color: #0085ff;
}
And here’s the preview for our levitating bottom nav.
And there you have it, our bottom navigation with only HTML/CSS. For more variation, you can checkout my repo here, and let me know if it helps or if I’m missing something in the comments below.
Thanks for coming by and Peace ✌
Author
- Github: @NabillaTrisnani
- LinkendIn: Nabilla Trisnani
- Twitter: @NabillaTrisnani
Top comments (0)