Viewers: in countries Watching now:
Join James Williamson, as he shows you how to create elegant menus, links, and buttons that help visitors navigate your site faster and more intuitively. The course covers creating structured navigation that is accessible and clean, styling links, and building horizontal and vertical menus with rollover effects. The last chapter reveals how to create stylish buttons with special effects and CSS sprites.
I hope you had fun going through the Vertical Menu Lab. Let's compare your finished files with mine, and discuss each of the steps for a lab as we go through the code. So I have actually opened up the index.htm and the main.css file from the finished_files folder of the 03_09. And remember, the CSS file, the main.css is actually in the _css subdirectory. So we're just going to jump right in and go through all of these steps. All right, so for the first step, you needed to go into the CSS reset and add the ul and li elements to eliminate any of the default margins and padding from those lists.
So to do that, you were going to go down into the CSS reset, which is right here on about line 98 or so. I just went ahead and added the ul and li element selectors to the existing CSS reset. Now, if you put yours at the end and not right here, there is nothing wrong with that. I just like grouping elements together. Since I already had the ordered list there, I just went ahead and put those two right there in order as well. All right, our next step was to locate the info section styles, remember they were on about line 351 or so.
Now, in that section, our first item of business was to write a selector that targets all unordered lists in those info sections, and we were going to add some properties that would strip out all the default list styling and then set a margin for those using 1 em for the top, 1.2 em for right and left, and then 1 em for the bottom. If I go down into my code again here, around line 351 or so, this is the selector I wrote for that. So, I took a cue from the selectors above it, where we're doing an element-specific class selector, we're essentially saying that, hey, any section element that you find with the class of info applied to that, look inside that and find any unordered list.
So we're being very specific, but we're really tackling any section element that has the class info applied to it which for all of those little sections that we have in the finished_files, it's pretty much all of them. All right, we went ahead and set the margins, 1 em for top and bottom, 1.2 em for right and left. If you wrote that out a little bit and didn't use shorthand, there is nothing wrong with that. It will still work just fine. And the next thing I did was I went ahead and stripped out all of the list-style property. So I just went ahead and set them to none. Now, our next step was to target the list items inside this section.
So again, we have another selector that's doing that. We were supposed to set the bottom margin of that to 0.8 ems and then reset the font size a little smaller than the default size at 0.9 ems. So again, this is a selector that I used. If you did section.info ul li, that works just fine, but it's maybe one more element than you actually need. And then finally in this section, we were tasked to target all of the individual links with inside lists and change their display property to block.
Now here, we did have to go a little bit more specific with this selector, we didn't want to target all links inside these info sections, we only wanted to target a link when it was inside of a list, which is why I used the list item element selector in combination with that. So again, just setting that display property to block. That's going to take care of all of our sort of generic styling for lists within those info sections. Now, the next order of business was to find the styles that we're targeting, that one specific section that has a class of find.
And then what we were supposed to do there is write selectors that were specific for that section, that were going to affect the vertical menu that we were building. So I am going to scroll back down to find those, and for me, I think it's about line 443, yeah, or so. For you it might be a little different. If it is, it's not that big of a deal. Remember, the first step was to target any unordered list inside that specific section. And again, I am just taking cues from some of the selectors above this. I'm doing an element specific class selector. I am saying any section with the class of find applied to it, and I'm going to target an unordered list inside of that.
You may be asking yourself, wait a minute, what about specificity here? If you've dealt with specificity much, essentially it says the most specific rule wins if there is a conflict between the two of them. There's certainly a conflict between the info ul rule, and the find ul rule. But we've got one thing going for us here, which is this section is actually below the info section, meaning it comes later, and the last style applied wins. So in this case, we're using the cascade more than we're actually using specificity.
If you felt like you needed to write a lot more specific selector in order to get that targeting done, you don't really have to do that because it's a little bit lower on down your styles. Okay, so here we were setting our margins to 1 em for the top, 0.6 ems for the right and left, and 0.6 ems for the bottom. Again, if you didn't write the shorthand quite that way, that's fine, doesn't matter. Even if you did them all individually, still going to work just fine. The next thing we wanted to do was to strip out all the margins from the list items. So I just went ahead and did a margin of zero to do that within the selector, and then we want to create that bevel effect.
And remember, we were doing that by creating both the top and a bottom border, both of them were 1 pixel and solid, but then the colors were a little bit different. Remember, the bottom border got that sort of lighter blue, whereas the top border got this darker blue. Okay, now that's going to create that bevel effect, and if I switch over into my browser, this creates this bevel effect that you're seeing dividing the two of them, but of course, our top menu item and our bottom menu item don't need those borders, especially when there were only going to get like a top or a bottom one respectively so that the bevel effect wouldn't even apply there.
So, your next order of business was to strip those out from the top and bottom elements. And again, I just used the technique that we used in the very last exercise within this chapter. I used the first-child and the last-child selectors, I used both of them. And in the first-child, I told this border-top to be none, and in the last-child, I told the border-bottom to be none as well. Scroll down a little bit, we've got two more things that we needed to do, one was to find all of the menu items, in this case, that would have been the links inside the list items, inside that section and then just add a little bit of padding all the way around it, 0.6 ems worth of padding. Again, I just used shorthand notation here.
Then the very last thing was to create a rollover. And to do that, I just went ahead and did a generic a:hover inside the find section, and I left off the li. If you added the li there, that's fine, there's nothing wrong with that. That's actually probably a little bit safer than the way I did it. I just happened to know that within that one find out more about section, the only thing that's ever going to be in there is a menu. So in that case, I feel a little bit freer maybe to use selectors that aren't quite as specific. Again, we give it a foreground color of that orange, and then we were giving in a background using an image this time instead of a color, which is resulting in that diagonal pattern.
Now, I wanted to see if some of you guys were going to catch this. If I scroll up, and I take a look at any of these other sections, a couple of them have links, and if I scroll over those links, I happen to see that exact same pattern. So, I did this on purpose. I wanted to see if you guys were really reviewing the styles or not and seeing whether you were paying attention to some of the global styles that were placed before that. If I go all the way up into the Global Styles, and I start looking at this one selector right up here that says a:hover, so every single link in the entire site starts out with that background pattern on hover, and I will override it in some places, and I won't on others.
So if you were checking through the styles, you would have seen that, and you would have said, hey, you've already got that applied, you don't necessarily need it. So we didn't really need it there, it's not hurting anything by being there. So, certainly don't feel like you have to rush to take it out. But it was one of those things where I was just checking to see if you were paying attention. We don't really need that. If I save this, go back into my browser, and refresh it, I notice that when I come back in here, I still see the pattern. So in that sense, no harm, no foul. So, I know there was a lot to that lab, creating vertical menus as we did throughout the chapter before that, that's rather straightforward.
However, I wanted to point out that integrating one into the fabric of a larger site is a totally different task. Now, I hope this lab has helped you not only understand how menus are styled, but what you're going to need to do as you organize, and write the menu styles as a smaller part of your larger overall site.
There are currently no FAQs about CSS: Styling Navigation.
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.