Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
In an earlier movie on setting up CSS preferences, we instructed Dreamweaver to use shorthand notations for margins, padding, background, list and borders but not for font. At the time I mentioned how incorrect application of the font shorthand can cause problems. So I tend to like implementing it on a case by case basis. In this movie, we'll take a closer look at the properties that we can set for the font shorthand notation and the problems that its careless use can cause. So here we have a file, notation.htm, opened and this has a few examples of font shorthand notation.
So here are all the properties that we can set through font shorthand notation. We have style, variant, weight, size, which has the optional ability to pass line height into it, and finally family. Unlike margins and padding, you can arrange the notation in almost any order that you want. In fact, there are only two values you must have and they must be in a certain order. Each font notation must contain both a size and a font family. They have to be in that order and they have to be the last two values submitted.
This type of flexibility allows us to write shorthand notation in several ways. Let's take a look at the three examples that we have listed here. So our first example would pass an italic, small-caps, bold, a font of 1.2 ems in size and a line height of 2 along with Arial and sans-serif as the font declaration. Now let's spend a little bit time looking at line height. Notice that the font size and the line height are separated by that forward slash. And in this case, for the line height, we are passing a multiple value and not an em value.
Line height is actually the only property that's not a specific font property that can be passed with the font shorthand notation. So if we don't have a lot of information to pass to the user agent on a specific element's font properties, it's really easy just to shorten things up a bit. For example, in the one below this we are passing bold, italic, 2 ems in Arial and sans-serif. We are leaving off things like small-caps that we are not setting. But take a look at Example 3. Here we are just passing a size and a font family. And in reality, that's all we really need to do.
However, there is one problem with shortening the shorthand notation the way you are seeing here. Any problem that's left out is a side, its default value for that element regardless of what is inherited or previously assigned. To explore this concept a little further, we'll practice with font shorthand notation and experience how it can get you in to trouble. So I'm going to switch over to my galleries.htm file and there are a couple of things I want to point out. We have some headings that we are going to start to style, and we would like to reduce the weight of the heading selectors by using font shorthand notation.
Well, if I look inside my galleryArticle divs, inside the mainContent, I can see that I have several headings. We have these h1 tags, followed by h2 tags and if I scroll down through the article, I can see that I have a few h3 tags. So I want to go ahead and rewrite their styles so that they are maybe not taking up quite as much code and shorthand notation offers us a really intriguing way of doing that. Well I'm going to go ahead and switch to a Split Screen view. Notice that we are using a Vertical split screen. You can get that by going up to View and making sure that it says Split vertical.
And for my related files I'm going to click on the main.css, so I'm focusing on the style sheet. You might also want to reposition your Design view so that you are looking at least at one of the headings, if not as many as you can. I am going to go ahead and scroll all the way down to the very bottom of my code, because I have stored some styles down there. So if you go all the way down to about line 626, you are going to see a comment that says Add CSS exercise code here, and that's what we are looking for. So let's take a moment to review what's going on here before we talk about customizing the CSS with font shorthand notation.
And I'm just going to resize that out a little bit so I can see these a little better, there we go. Okay, so our first rule is a group selector that's grouping the h2 and the h3s together and italicizing them. You can see that's happening, those h3s are italicizing, this h2 is italicized but the h1 is not. And then each individual selector, we have the h1 selector, the h2, and the h3. They all have specific font information that they don't necessarily share. So what we are going to do is we are going to ahead and edit these, and the first thing I'm going to do is just remove some of the existing font styling so that I can replace it with one line of code.
So I'm going to go to my mainContent .galleryArticle h1 and I'm going to start from the bottom. And I'm going to remove font weight, notice that's being set to normal and I'm going to remove line height, notice that's set to 1.75 ems, and I'm going to remove font size which is 2.5 em. So you got to remember all that. You may say, why did I start from the bottom? Well, if there is one thing that I try to avoid typing if I can, it's all these font family declarations. They take a lot of typing, you might misspell something by mistake, maybe forget to put quotation marks around something.
So I kind of like to let those settings handle that and what I'm going to do is just remove font-family and just make that font. So this will become my font shorthand notation. All right, so the next thing I'm going to do is go ahead and place in all the things that I just took out. So I'm going to type in normal, so we don't get any bolding then I'm going to do a space. Notice we don't put commas between these, we put spaces. And then font size was 2.5 ems. I'll do a forward slash to pass along the line height of 1.75. I need to make sure also that I have a space here between Georgia and line height.
So I'm going to go ahead and Save All. Then I can see my heading1 doesn't change at all but the font shorthand notation is doing exactly what I asked it to do. Wonderful! Now I'm going to scroll down and do the same thing to the galleryArticle h2 and the galleryArticle h3. So in a very similar fashion I'm going to go through and remove font weight normal, line height of 0, and a font size of 1.2. And then it will modify our font family declaration to just be the font shorthand notation. So again, remember, we took out normal, and then we just passed in 1.2 ems for the size, forward slash 0 for the line height.
And again make sure that you add some space between that value and Georgia, and then save the file. The last one we need to modify is the mainContent h3, and this one really does not have a lot being passed into it. Just the size and a family. Well that's all we really need for font shorthand notation so I'm going to remove the size, I'll go ahead and shorten that down to just font. And then in front of the font I'm going to pass the size, and it's .95 em and then a space. So then I'm just going to do a Save All. And before we test this there is one more thing that I need to change here.
Notice that the mainContent h3 rule is not as specific as the other two heading rules. We have mainContent .galleryArticle h1, mainContent .galleryArticle h2. Well, dealing with specificity and font shorthand notation is something that you really need to take serious consideration about. So I want to make sure that the values that I'm passing here are definitely passed along. So I'm going to make this a little bit more specific by typing in .galleryArticle h3, and then we'll go ahead and do a Save All. Okay, cool.
Let's go ahead and preview that in our browser and see how we did. Everything looks pretty much the same except for the fact that h2, and all of my h3s are not italicized even though I'm explicitly asking that those guys be italicized. All right, so what's happening here? Well, let's review our font shorthand notation because that's what causing the problem. All right, if I go down to my mainContent .galleryArticle h2 selector, you can see what I'm passing. I'm passing normal so that it's not bold and then 1.2 ems, 0 for line height, and then the font family.
So where is the problem? Well you will notice I didn't pass anything in for italic. For your font styles, you can either have italic or you could have normal. And for font weight, you can either have bold or you can have normal. But I just passed one normal value here. So the browser doesn't know which one I wanted, whether it was font style or font weight, so it does both. So in this case, I also need to add an italic to it, perfect. So now I have italic and normal. Now if I go down to my h3, I face a similar problem. I didn't explicitly specify whether I wanted it to be italicized or not.
Now for a header, its default is not to be italicized. So I shouldn't have assumed that it was. In fact, because of its specificity it is now overwriting this because a normal declaration is being passed along with that. So you can see that not declaring a value can sometimes get you in trouble so now I'm going to go ahead and type in italic and then a space. So now we don't really need the group selector above it. So I'm going to go ahead and get rid of that just to clean up my code a little bit. Let's do a Save All, and we'll preview that in our browser. Okay, great.
Now we are seeing both of those guys italicized and they are looking the way that we want them. So you can see that using font shorthand notation can save a lot of time and code when specing your type in CSS. But improper use can cause some unintended side effects, especially for nested elements or group selectors that overwrite previously set properties. Take great care when deciding to use the font shorthand and double check to make sure you are not adversely affecting the desired element or any of its related elements.
Get unlimited access to all courses for just $25/month.Become a member
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.
Your file was successfully uploaded.