HTML5 and CSS3 Tutorial #3: Drop-Down Navigation Bar with “:hover” Pseudo Class, and Unordered Lists

Courtesy Note: If you found this tutorial useful, please take a few moments to comment below!

The following notable HTML5/CSS3 topics will be covered in this tutorial:

1. “:hover” pseudo-class
2. “white-space” CSS3 property
3. “position: absolute” CSS3 property
4. “display” CSS3 property


This is probably one of the more frustrating features to code for your own site when you’re a beginner. A drop down navigation bar could be one of the most essential features on your website believe it or not. If you have a lot of content and links, and need help on coding a navigation bar that handles drop-down menus, then this solution is for you. There could be better solutions out there, using different HTML elements, but this is the solution that I was able to come up with.

I’ll post the screenshots of the original navigation bar, and the navigation bar after it was hovered over, to show that the dropdown menu actually works. I know there’s a better way to do this, such as having you test the navigation bar yourself on my blog, but unfortunately I can’t handle that feature. Sorry for any inconveniences, but the code does work!

Original Navigation Bar:
initial_navigation_bar

Navigation Bar Displaying Drop Down Menu, After Hovering Over “Profile” Tab:
dropdown_menu

Questions? Feedback? Please leave a comment!

HTML Code:

[sourcecode language=”html” collapse=”false” wraplines=”false”]

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Dropdown Menu Demo</title>
<link rel="stylesheet" href="styles.css">
</head>

<body>
<div id="navigation"> <!– Navigation id not used as selector in CSS file. –>
<ul>
<li><a href="#">Home</a>
<ul class="dropdown">
<li><a href="#">Games</a></li>
<li><a href="#">Anime</a></li>
</ul>
</li> <!– END: Home –>

<li><a href="#">Profile</a>
<ul class="dropdown">
<li><a href="#">Edit Profile</a></li>
<li><a href="#">Settings</a></li>
<li><a href="#">Log Out</a></li>
</ul>
</li> <!– END: Profile –>

<li><a href="#">About</a>
<ul class="dropdown">
<li><a href="#">About Us</a></li>
<li><a href="#">Executive Team</a></li>
</ul>
</li> <!– END: About –>

<li><a href="#">Support</a>
<ul class="dropdown">
<li><a href="#">Contact Us</a></li>
<li><a href="#">Feedback</a></li>
</ul>
</li> <!– END: Support –>

</ul>
</div>
</body>
</html>

[/sourcecode]

CSS Code:

[sourcecode language=”css” collapse=”false” wraplines=”false”]
ul {
list-style:none;
margin:0; /* Demonstration purposes to keep navigation menu in top left corner. */
padding:0;
}

ul li {
float:left; /* Puts tabs on same line */
}

ul li a {
display:block; /* Displays links on separate lines. */
color:#000000;
padding:5px 15px 5px 15px; /* 5px top, 15px right, 5px bottom, 15px left */
margin-top:1px; /* Separates dropdown links by whitespace */
margin-left:1px; /* Separates tabs by whitespace */
background-color:#CCCCCC;
white-space:nowrap; /* Doesn’t wrap words across separate lines if line is too long for parent’s li width. This is for the dropdown menu. */
}

li:hover ul { /* Displays dropdown menu for specific li element, once mouse hovers over li element */
position:absolute; /* Positions directly under the correct tab */
display:block;
}

li:hover li { /* Keeps li elements same width in dropdown menu, since it’s originally floating left, as specified in "ul li" selector */
float:none;
}

li:hover a {
background-color:#252525; /* Changes background color of tab and dropdown links to shade of black when tab is hovered over */
color:#FFFFFF; /* Changes text color of tab and dropdown links to white when tab is hovered over. */
}

a {
text-decoration:none; /* So that links aren’t underlined */
}

.dropdown {
display:none; /* Anything in dropdown class doesn’t appear initially when page loads */
}

.dropdown li:hover a {
text-decoration:underline; /* Underlines link if li element in dropdown menu is hovered over */
}

.dropdown li a:hover {
background-color:#CCCCCC; /* Changes background color of link in dropdown menu to grey when we hover over link */
color:#000000; /* Changes text color of link in dropdown menu to black when we hover over link */
}
[/sourcecode]

P.S:

You’re probably a motivated web developer who wants to freelance, blog, and/or be the best developer you can be. I feel many developers suffer from lack of clarity on their career/life, and poor time management and productivity practices. Without clarity and without the commitment to maximize your time, you don’t give yourself the ability to even work on your website projects and hone your coding skills with maximum efficiency.
To be the best coder, blogger, or freelancer you can be, it helps to master the non-technical aspects of entrepreneurship and personal growth. To begin building a solid foundation, I highly recommend that you consider getting my mentor’s free entrepreneurship book and training right now, where he shares his top 30+ tips that he followed in order to become a multi-million dollar entrepreneur in his 20s. I’ve read it, and as a blogger and web developer, it’s made a huge difference in my career outlook and my productivity! In addition, you may also find his productivity and time management master class useful to sign up for!
Remember that the book is free, so be sure to get it here now because I’m not sure if he’s planning to remove the book off the website! Obviously you have the choice, but I truly believe that you will learn some valuable lessons from it, like I have as a fellow blogger and developer. Please let me know if you have any questions, and I’d love to hear what you learn from the book!

teb-fb

HTML5 & CSS3 Tutorial: Basic Web Layout With divs, id selectors, unordered lists, and floats

Courtesy Note: If you found this tutorial useful, please take a few moments to comment below!

The following notable HTML5/CSS3 topics will be covered in this tutorial:

1. New HTML5 Tags (header, nav, footer)
2. ‘id’ selectors
3. Unordered lists (‘ul’ HTML tag)
4. ‘float’ and ‘clear’ CSS3 properties


For those of you who don’t know, I’ve been working on a huge website project for the past few weeks and in doing so, I’ve familiarized myself and learned a whole lot about HTML5 and CSS3, and through my struggles of coding certain features, I had the inspiration of posting basic coding tutorials of how to perform certain tasks and do certain designs in HTML and CSS. The first tutorial I will be providing on this blog is making a basic web layout. This will also be posted in the “Code” section.

This will be a very basic tutorial of how to make a basic layout for a webpage using divs, unordered lists, and floats. I will be providing a screenshot of what the web layout will look like, as well as the code in html and css that designs that layout. Comments will be provided in each code snippet for html and css.

Objectives:

After studying the code and comments, you should be a little basic familiarity with how id selectors work and that they specify which styles the html code will be using from the css code, a little familiarity of why we had to use the float properties, what an unordered list looks like (in the code and visually), how the “clear” property works for floats, and how to make a really basic web layout.

Questions? Please leave a comment!

Desired Web Layout (with colors):

layout

HTML Code:

 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="layout.css" />
    </head>
    <body>
        <div id="wrapper">
            <header> 
                Header
                <br />
                Header
                <br />
                Header
                <br />
                Header
                <br />
            </header>
            <nav>
                Navigation links go here.

                <ul>
                    <li>
                        <a href="#">Home</a>
                    </li>
                    <li>
                        <a href="#">Contact</a>
                    </li>
                    <li>
                        <a href="#">About</a>
                    </li>
                    <li>
                        <a href="#">Link #4</a>
                    </li>
                    <li>
                        <a href="#">Link #5</a>
                    </li>
                    <li>
                        <a href="#">Link #6</a>
                    </li>
                    <li>
                        <a href="#">Link #7</a>
                    </li>
                    <li>
                        <a href="#">Link #8</a>
                    </li>
                </ul>
            </nav>
            <div id="content">
                <p>Content goes here.</p>
            </div>
            <footer> 
                Footer
                <br />
                Footer
                <br />
                Footer
                <br />
                Footer
                <br />
            </footer>
        </div> <!-- Wrapper -->
    </body>
</html>

CSS Code:

Note: id selectors are always required to have the hashtag (#) before the name of the element in the css code.

 

body {
  background-color: yellow;
}

#wrapper {
  width: 80%;
  border-style: solid;
  border-color: black;
  border-width: medium;
  background-color: purple;
  margin-left: auto;
  margin-right: auto;
}

header {
  width: 100%;
  background-color: red;
}

nav {
  width: 30%;
  background-color: white;
  float: left;
  height: 400px;
}

#content {
  width: 70%;
  background-color: blue;
  float: right;
  height: 400px;
}

footer {
  clear: both;
  width: 100%;
  background-color: gray;
}

P.S:

You’re probably a motivated web developer who wants to freelance, blog, and/or be the best developer you can be. I feel many developers suffer from lack of clarity on their career/life, and poor time management and productivity practices. Without clarity and without the commitment to maximize your time, you don’t give yourself the ability to even work on your website projects and hone your coding skills with maximum efficiency.

To be the best coder, blogger, or freelancer you can be, it helps to master the non-technical aspects of entrepreneurship and personal growth. To begin building a solid foundation, I highly recommend that you consider getting my mentor’s free entrepreneurship book and training right now, where he shares his top 30+ tips that he followed in order to become a multi-million dollar entrepreneur in his 20s. I’ve read it, and as a blogger and web developer, it’s made a huge difference in my career outlook and my productivity! In addition, you may also find his productivity and time management master class useful to sign up for!

Remember that the book is free, so be sure to get it here now because I’m not sure if he’s planning to remove the book off the website! Obviously you have the choice, but I truly believe that you will learn some valuable lessons from it, like I have as a fellow blogger and developer. Please let me know if you have any questions, and I’d love to hear what you learn from the book!

teb-fb