Defining a percentage-based page with ems
Video: Defining a percentage-based page with emsAs noted in the introductory video for this chapter, the percentage-based ems have a lot to recommend them, including easy scalability and better accessibility. However, defining your em sizes to match your pixel-based comps can be a hassle. Let me explain why and show you a way around that issue. If no percentage font size is declared, the default is assumed to be 100%. While this is fine, it makes it difficult to relate ems to pixel sizes. Let me walk you through the math.
- Next steps
Viewers: in countries Watching now:
Dive deep into key typographic concepts and learn how to manipulate type in Dreamweaver. Author Joseph Lowery introduces Dreamweaver type tools and shows how to perform basic text modifications, establish the appropriate type unit, integrate custom web fonts, and apply drop shadows, gradients, and other effects. The course also provides in-depth tutorials on structuring text with headings, paragraphs, columns, and lists, and offers a preview of Adobe's proposed CSS Regions.
- Modifying type in the CSS Styles panel
- Understanding the different type measurement unit options
- Allowing users to set page type size
- Employing web-safe fonts
- Exploring CSS 3 typeface options
- Setting up @font-face
- Applying color and transparency to type
- Styling the font weight, case, and letter spacing
- Inserting drop caps
- Rotating text with CSS transform
- Laying out text in multiple columns
- Incorporating ordered and unordered lists
- Targeting lists items with the nth-child selector
Defining a percentage-based page with ems
As noted in the introductory video for this chapter, the percentage-based ems have a lot to recommend them, including easy scalability and better accessibility. However, defining your em sizes to match your pixel-based comps can be a hassle. Let me explain why and show you a way around that issue. If no percentage font size is declared, the default is assumed to be 100%. While this is fine, it makes it difficult to relate ems to pixel sizes. Let me walk you through the math.
The default font size for text in browsers is equivalent to 16 pixels. If a comp calls for text that's 14 pixels tall as with the paragraph text that we see here, you'll have to figure out the percentage of 16 that is equal to 14. While the math isn't really that difficult, it's 14 divided by 16, it's a pain to have to figure out for every heading, paragraph, table cell, and list item in a design. A far easier approach is to set the initial overall font size to 62.5%.
This has the effect of establishing a Base 10 System because 62.5% of 16 is 10. This means that if you wanted your p tags to be 14 pixels tall, you would make them 1.4 ems and your 26-pixel tall h1 would be 2.6 ems, and so on. Suddenly, your em conversion problem has vanished. So let's put that technique to practice and I'll show you how to overcome one of the ems measurement units inherent problems along the way.
So in Dreamweaver, I have opened resources.htm from the Chapter 2 > 02_03 folder, and I'm in Live view. My CSS STYLES panel now is open in Current mode, so we can make some selections and see the related rules. We're going to start by going to the body tag and changing the font size percentage. So here, you can see over in the CSS STYLES panel because no other element is selected on the page, it defaults to the body rule, and you can see by looking at the font property that we're using the shorthand technique.
So I'm just going to go ahead and put in the percentage size here, 62.5%. Now if you're not using the shorthand technique, you could just enter in a font-size property and make that 62.5%. I'll go ahead and hit Return and you'll see a radical change. So let's go in and make the necessary adjustments. I'm going to work top to bottom here. So let's go ahead and start off with the word, Resources, which as you can see is in a div called pageID, and over here we have the rule, #mainContent h1pageID.
So I'm going to go ahead and add in a font size for here, and according to the comp I'm following, which I don't have on screen, this should be 22.5 pixels tall. So I'll make that 2.25 ems. Now let's work with my h1 tag, the "Got questions" that you see here, and this will change the font size to the equivalent of 32 pixels or 3.2 ems.
Now I'm going ahead and just typing in the two letters em to make it a little bit quicker. If you're not that familiar with the syntax, you can always choose that option from the dropdown list. Alright, what about our main body paragraphs? So in this case, because I want this to be a more universal solution, I'm not going to go with the first rule that was selected, which is #mainContent #mainArticle p, instead I want to go for something more general which is #mainContent p or paragraph, and this will affect a paragraph anywhere, not just in the div called mainArticle.
So font size, we want this to be the equivalent of 16 pixels. So it's 1.6 ems and let's work our way down a little bit more. Here's a h2 tag that needs to be 25.5 pixels high. So now we'll add a font size equivalent to 25.5 pixels and I'm sure you've gotten into the rhythm of this, so we'll put in font size and make it 2.55 ems.
You're basically just shifting over the decimal point. Now let's do one without a decimal point, this h3 tag that we see here, we'll give it a font size equivalent to 20 pixels and now we've gotten all of our text headings and paragraphs handled. Let's continue to scroll down the page a bit. Everything is looking good, until we get to the list items. Now because these are in an li tag instead of a p tag, they still appear too small.
So we'll have to specify a CSS rule for them and the one we're looking for is the #mainArticle li and you can see that here. So we want this to appear the same size as the text, which if you recall, was 1.6 ems. So I'll put in a font size of 1.6 ems. Alright, looking pretty good! Now here is that catch that I've been telling you about with ems. Whenever you have a nested tag like a li inside of an li, you get a very strange reaction.
It actually can grow bigger. So what you need to do is to specify a rule just for this area. There's a couple of ways to approach this, but one primary technique is just to set the font size to 100% and that will work regardless of how many nesting levels that you have. Alright, I am going to go ahead and put my cursor in here and let me expand this box just a little bit, so you can see that, in fact, there already is a CSS rule for the nested list items. Here we have "#mainContent #mainArticle li li." So font size and we want this to be, as I said, 100% and again, I'm just going to go ahead and type that in.
Now everything is exactly the same size on our page and we're looking pretty good. Let's scroll down just a bit more. Now you'll notice that the footer paragraph, if I scroll back up, and the sidebar text are a bit small. I'll leave adjusting those CSS rules to you as practice for working with ems.
There are currently no FAQs about Typography with CSS in Dreamweaver.