Tải bản đầy đủ (.pdf) (10 trang)

Learning Web Design Third Edition- P29 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (350.1 KB, 10 trang )

Part III: CSS for Presentation
266
Padding
scroll
When scroll is specified, scrollbars are added to the element box to let
users scroll through the content. Be aware that when you set the value to
scroll, the scrollbars will always be there, even if the content fits in the
specified height just fine.
auto
The auto value allows the browser to decide how to handle overflow. In
most cases, scrollbars are added only when the content doesn’t fit and
they are needed.
Padding
Padding is the space between the content area and the border (or the place
the border would be if one isn’t specified). I find it helpful to add a little
padding to elements when using a background color or a border. It gives the
content a little breathing room, and prevents the border or edge of the back-
ground from bumping right up against the text.
You can add padding to the individual sides of any element (block-level or
inline). There is also a shorthand padding property that lets you add padding
on all sides at once.
padding-top, padding-right, padding-bottom, padding-left
Values:
length measurement | percentage |
auto
|
inherit
Default:

auto
Applies to:


all elements
Inherits:
no
padding
Values:
length measurement | percentage |
auto
|
inherit
Default:

auto
Applies to:
all elements
Inherits:
no
With the padding-top, padding-right, padding-bottom, and padding-left
properties, you can specify an amount of padding for each side of an element
as shown in this example and Figure 14-5 (note that I’ve also added a back-
ground color to make the edges of the padding area apparent).
3em 3em
1em
1em
Figure 14-5. Adding padding around an element.
blockquote {
padding-top: 1em;
padding-right: 3em;
padding-bottom: 1em;
padding-left: 3em;
background-color: #D098D4;

}
Padding
Chapter 14, Thinking Inside the Box (Padding, Borders, and Margins)
267
You can specify padding in any of the CSS length units (see the At a Glance
sidebar for a refresher) or as a percentage of the width of the parent element.
Yes, the width is used as the basis even for top and bottom padding, and if the
width of the parent element should change, so will the padding values on all
sides of the child element.
The shorthand padding property
As an alternative to setting padding one side at a time, you can use the short-
hand padding property to add padding all around the element. The syntax is
kind of interesting; you can specify four, three, two, or one value for a single
padding property. Let’s see how that works, starting with four values.
When you supply four padding values, they are applied to each side in
clockwise order, starting at the top. Some people use the mnemonic device
“TRouBLe” for the order Top, Right, Bottom, Left.
{ padding: top right bottom left; }
Using the padding property, we could reproduce the padding specified with
the four individual properties in the previous example like this:
blockquote {
padding: 1em 3em 1em 3em;
background-color: #D098D4;
}
If the left and right padding are the same, you can shorten it by supplying
only three values. The value for “right” (the second value in the string) will be
mirrored and used for “left” as well. It is as though the browser assumes “left”
value is missing, so it just uses the “right” value on both sides. The syntax for
three values is as follows:
{ padding: top right/left bottom; }

This rule would be equivalent to the previous example because the padding
on the left and right edges of the element should be set to 3em.
blockquote {
padding: 1em 3em 1em;
background-color: #D098D4;
}
Continuing with this pattern, if you provide only two values, the first one is
used for the top and the bottom edges, and the second one is used for the left
and right edges:
{ padding: top/bottom right/left; }
Again, the same effect achieved by the previous two examples could be
accomplished with this rule.
blockquote {
padding: 1em 3em;
background-color: #D098D4;
}
The CSS units of measurement are:
Relative units:
em
Em = font size
ex
Ex = height of “x”
px
Pixel
Absolute units:
pt
Point
pc
Pica
in

Inches
mm
Millimeters
cm
Centimeters
A t A G l A n c e
The CSS units of measurement are:
Relative units:
em
Em = font size
ex
Ex = height of “x”
px
Pixel
Absolute units:
pt
Point
pc
Pica
in
Inches
mm
Millimeters
cm
Centimeters
A t A G l A n c e
Shorthand Values
1 value
padding: 10px;


Applied to all sides.
2 values
padding: 10px 6px;

First is top and bottom;
Second is left and right.
3 values
padding: 10px 6px 4px;

First is top;
Second is left and right;
Third is bottom.
4 values
padding: 10px 6px 4px 10px;

Applied clockwise to top, right,
bottom, and left edges consecutively
(TRBL).
A t A G l A n c e
Shorthand Values
1 value
padding: 10px;

Applied to all sides.
2 values
padding: 10px 6px;

First is top and bottom;
Second is left and right.
3 values

padding: 10px 6px 4px;

First is top;
Second is left and right;
Third is bottom.
4 values
padding: 10px 6px 4px 10px;

Applied clockwise to top, right,
bottom, and left edges consecutively
(TRBL).
A t A G l A n c e
Part III: CSS for Presentation
268
Padding
Note that all of the previous examples have the same visual effect as shown
in Figure 14-5.
Finally, if you provide just one value, it will be applied to all four sides of the
element. This declaration applies 15 pixels of padding on all sides of a div
element.
div#announcement {
padding: 15px;
border: 1px solid;
}
Padding doesn’t need to be so conservative or symmetrical. You can use pad-
ding to dramatic effect for pushing content around inside its own border or
colored background. The examples in Figure 14-6 are a little more “out there”
and may give you a different perspective on how padding can be used.
padding: 10px 33%;
padding: 10px 10px 10px 50%;

padding: 100px 10px 10px 100px;
padding: 100px 5px;
Figure 14-6. Extreme padding.
padding: 10px 33%;
padding: 10px 10px 10px 50%;
padding: 100px 10px 10px 100px;
padding: 100px 5px;
Figure 14-6. Extreme padding.
exercise 14-1
|
Adding a little padding
In this exercise, we’ll use basic box properties to improve the appearance of a
fictional shopping site, JenWARE.com. I’ve given you a big headstart by marking up
the source document and creating a style sheet that handles text formatting and
backgrounds. The document, jenware.html, is available in the materials directory
(www.learningwebdesign.com/materials).
Figure 14-7 shows before and after shots of the JenWARE home page. It’s going to
take a few steps to get this page into presentable shape, and padding is just the
beginning.
Figure 14-7. Before and after shots of the JenWARE home page.
Borders
Chapter 14, Thinking Inside the Box (Padding, Borders, and Margins)
269
Borders
A border is simply a line drawn around the content area and its (optional)
padding. Thankfully, it doesn’t have to be as boring as that last sentence
makes it sound. You can choose from eight border styles and make them any
width and color you like. You can apply the border all around the element or
just a particular side or sides. You can even apply different border styles to
sides of the same element. We’ll start our border exploration with the various

border styles.
Border style
The style is the most important of the border properties because, according
to the CSS specification, if there is no border style specified, the border does
Start by opening jenware.com in a browser and a text editor to see what you’ve
got to work with. The document has been divided into three
div
elements
(“intro,” “testimonials,” and “products”). Background colors have been added to the
body
, testimonials, and products sections. There is also a horizontally repeating
background image along the top of the
body
that creates the gradient (color fade)
at the top of the page, and an exclamation point image in the top-left corner of
the testimonials section. The remaining rules are for formatting text.
The first thing we’ll do is add padding to the “products”
div
. Two ems of padding
all around ought to be fine. Find the
#products
selector and add the
padding

declaration.
#products {
padding: 2em;
background-color: #FFF;
line-height: 2em;
}

Next, we’ll get a little fancier with the “testimonials” section. I want to clear some
space in the left side of the
div
so that my nifty exclamation point background
image is visible. There are several approaches to applying different padding
amounts to each side, but I’m going to do it in a way that gives you practice at
deliberately overriding earlier declarations.
Use the
padding
shorthand property to add 1 em of padding on all sides of the
testimonials
div
. Then write a second declaration that adds 60 pixels of padding
to the left side only. Because the
padding-left
declaration comes second, it will
override the 1em setting applied with the
padding
property.
#testimonials {
padding: 1em;
padding-left: 60px;
background: #FFBC53 url(images/ex-circle-corner.gif) no-repeat left
top;
line-height: 1.2em;
}
Save your work and look at it in the browser. The testimonials and product
descriptions should look a little more comfortable in their boxes. Figure 14-8
highlights the padding additions.
1.

2.
3.
4.
1em
60px
1em
2em
2em
Figure 14-8. The pink area indicates
padding added to the testimonials section.
Blue indicates the products section
padding.
1em
60px
1em
2em
2em
Figure 14-8. The pink area indicates
padding added to the testimonials section.
Blue indicates the products section
padding.
Part III: CSS for Presentation
270
Borders
not exist. In other words, you must always declare the style of the border, or
the other border properties will be ignored.
Border styles can be applied one side at a time or by using the shorthand
border-style property.
border-top-style, border-right-style,
border-bottom-style, border-left-style

Values:

none
|
dotted
|
dashed
|
solid
|
double
|
groove
|
ridge
|
inset
|
outset
|
inherit
Default:

none
Applies to:
all elements
Inherits:
no
border-style
Values:


none
|
dotted
|
dashed
|
solid
|
double
|
groove
|
ridge
|
inset
|
outset
|
inherit
Default:

none
Applies to:
all elements
Inherits:
no
The value of the border-style properties is one of nine keywords describing
the available border styles, as shown in Figure 14-9.
Figure 14-9. The available border styles (shown at the default medium width) .

You can use the side-specific border style properties (border-top-style,
border-right-style, border-bottom-style, and border-left-style) to apply
a style to one side of the element. If you do not specify a width, the default
medium width will be used. If there is no color specified, the border uses the
foreground color of the element (same as the text).
In the following example, I’ve applied a different style to each side of an ele-
ment to show the single-side border properties in action (Figure 14-10).
WA R N I N G
There is a bug in Internet Explorer 6 for
Windows that causes borders specified as
dotted to render as dashed.
WA R N I N G
There is a bug in Internet Explorer 6 for
Windows that causes borders specified as
dotted to render as dashed.
Borders
Chapter 14, Thinking Inside the Box (Padding, Borders, and Margins)
271
div#silly {
border-top-style: solid;
border-right-style: dashed;
border-bottom-style: double;
border-left-style: dotted;
width: 300px;
height: 100px;}
The border-style shorthand property works on the clockwise (TRouBLe)
system described for padding earlier. You can supply four values for all four
sides or fewer values when the left/right and top/bottom borders are the
same. The silly border effect in the previous example could also be specified
using the border-style property as shown here, and the result would be the

same as shown in Figure 14-10.
border-style: solid dashed double dotted;
Border width (thickness)
Use one of the border width properties to specify the thickness of the border.
Once again, you can target each side of the element with a single-side prop-
erty, or specify several sides at once in clockwise order with the shorthand
border-width property.
border-top-width, border-right-width,
border-bottom-width, border-left-width
Values:
length units |
thin
|
medium
|
thick
|
inherit

Default:

medium
Applies to:
all elements
Inherits:
no
border-width
Values:
length units |
thin

|
medium
|
thick
|
inherit

Default:

medium
Applies to:
all elements
Inherits:
no
The most common way to specify the width of borders is using a pixel mea-
surement; however, you can also specify one of the keywords (thin, medium,
or thick) and leave the rendering up to the browser.
I’ve included a mix of values in this example (Figure 14-11). Notice that I’ve
also included the border-style property because if I didn’t, no border would
render at all.
div#help {
border-top-width: thin;
border-right-width: medium;
border-bottom-width: thick;
border-left-width: 12px;
border-style: solid;
width: 300px;
height: 100px; }
Figure 14-10. Border styles applied to
individual sides of an element.

Figure 14-10. Border styles applied to
individual sides of an element.
Part III: CSS for Presentation
272
Borders
or
div#help {
border-width: thin medium thick 12px;
border-style: solid;
width: 300px;
height: 100px; }
12px
thin
thick
medium
Figure 14-11. Specifying the width of borders.
Border color
Border colors are specified in the same way: using the side-specific properties
or the border-color shorthand property. When you specify a border color, it
overrides the foreground color as set by the color property for the element.
border-top-color, border-right-color,
border-bottom-color, border-left-color
Values:
color name or RGB value |
transparent
|
inherit

Default:
the value of the

color
property for the element
Applies to:
all elements
Inherits:
no
border-color
Values:
color name or RGB value |
transparent
|
inherit

Default:
the value of the
color
property for the element
Applies to:
all elements
Inherits:
no
You know all about specifying color values, and you should be getting used
to the shorthand properties as well, so I’ll keep this example short and sweet
(Figure 14-12). Here, I’ve provided two values for the shorthand border-color
property to make the top and bottom of a div maroon and the left and right
sides aqua.
div#special {
border-color: maroon aqua;
border-style: solid;
border-width: 6px;

width: 300px;
height: 100px;
}
N ot e
CSS2 added the transparent keyword
value for border colors that allows
the background of the parent to show
through the border, yet holds the width
of the border as specified. This may be
useful when creating rollover (:hover)
effects with CSS because the space where
the border will appear is maintained
when the mouse is not over the element.
Unfortunately, the transparent value
is not supported by Internet Explorer
for Windows (versions 6 and earlier).
Support in IE7 is not yet documented
as of this writing, so you’ll have to test it
out yourself.
N ot e
CSS2 added the transparent keyword
value for border colors that allows
the background of the parent to show
through the border, yet holds the width
of the border as specified. This may be
useful when creating rollover (:hover)
effects with CSS because the space where
the border will appear is maintained
when the mouse is not over the element.
Unfortunately, the transparent value

is not supported by Internet Explorer
for Windows (versions 6 and earlier).
Support in IE7 is not yet documented
as of this writing, so you’ll have to test it
out yourself.
Borders
Chapter 14, Thinking Inside the Box (Padding, Borders, and Margins)
273
Figure 14-12. Specifying the color of borders.
Combining style, width, and color
The authors of CSS didn’t skimp when it came to border shortcuts. They also
created properties for providing style, width, and color values in one declara-
tion. Again, you can specify the appearance of specific sides, or use the border
property to change all four sides at once.
border-top, border-right, border-bottom, border-left
Values:

border-style

border-width

border-color
or
inherit

Default:
defaults for each property
Applies to:
all elements
Inherits:

no
border
Values:

border-style

border-width

border-color
or
inherit

Default:
defaults for each property
Applies to:
all elements
Inherits:
no
The values for border and the side-specific border properties may include
style, width, and color values in any order. You do not need to declare all
three, but keep in mind that if the border style value is omitted, no border
will render.
The border shorthand property works a bit differently than the other short-
hand properties that we covered in that it takes one set of values and always
applies them to all four sides of the element. In other words, it does not use the
clockwise, “TRBL” system that we’ve seen with other shorthand properties.
Here is a smattering of valid border shortcut examples to get an idea for how
they work.
h1 { border-left: red .5em solid; } left border only
h2 { border-bottom: 1px solid; } bottom border only

p.example { border: 2px dotted #663; } all four sides
Now it is time to try your hand at borders. Exercise 14-2 will not only give you
some practice, but it should also give you some ideas on the ways borders can
be used to add graphic interest to CSS-based page designs.
Part III: CSS for Presentation
274
Borders
exercise 14-2
|
Border tricks
In this exercise, we’ll have some fun with borders on the JenWARE home page. In
addition to putting subtle borders around content sections on the page, we’ll use
borders to beef up the product headlines and as an alternative to underlines under
links.
Open jenware.html in a text editor if it isn’t already. We’ll start simple by using the
shorthand
border
property to add an orange (#F26521) dashed rule around the
testimonials section. Add the new declaration to the rule for the “testimonials”
div
.
#testimonials {
border: 1px dashed #F26521;
padding: 1em;
padding-left: 60px;
background: #FFBC53 url(images/ex-circle-corner.gif) no-repeat left
top;
line-height: 1.2em;
}
Next, add a double rule around the “products” area that is an even lighter orange

(#FFBC53) so as not to call too much attention to itself.
#products {
border: double #FFBC53;
padding: 2em;
background-color: #FFF;
line-height: 2em;
}
Just for fun (and practice), we’ll add decorative borders on two sides of the
headlines in the products section. I want the borders to be the same color as the
text, so we don’t need to specify the
border-color
. Find the existing rule for
h2

elements in the “products”
div
, and add a declaration that adds a 1-pixel solid
rule on the top of the headline. Add another declaration that adds a thicker, 3-
pixel solid rule on the left side. Finally, to prevent the text from bumping into that
left border, we can add a little bit of padding (1em) to the left of the headline
content.
#products h2 {
border-top: 1px solid;
border-left: 3px solid;
padding-left: 1em;
font-size: 1.2em;
color: #921A66;
}
The last thing we’ll do is replace the standard text underline under links with a
decorative bottom border.

You will find that there are already rules in the style sheet for changing the colors
of the four link states. Start by turning the underline off for all of the link states by
setting the
text-decoration
to
none
in each of the rules.
text-decoration: none;
Next, add a 1-pixel dotted border to the bottom edge of each state by adding this
declaration to each link rule:
border-bottom: 1px dotted;
1.
2.
3.
4.
Subtle Outlines
Keeping the color of the rule close
to the background color and
keeping the width of the rule quite
thin, we can achieve a very subtle
effect, creating a texture more than a
strong outline.
D e S I G n t I P
Subtle Outlines
Keeping the color of the rule close
to the background color and
keeping the width of the rule quite
thin, we can achieve a very subtle
effect, creating a texture more than a
strong outline.

D e S I G n t I P
Bottom Borders
Instead of
Underlines
Turning off link underlines and
replacing them with a custom
bottom border is a common design
technique in modern web design.
It lightens the look of links while
still making them stand out from
ordinary text.
D e S I G n t I P
Bottom Borders
Instead of
Underlines
Turning off link underlines and
replacing them with a custom
bottom border is a common design
technique in modern web design.
It lightens the look of links while
still making them stand out from
ordinary text.
D e S I G n t I P
N ot e
Internet Explorer 6 users will see dashed
borders instead of dotted borders under
links due to buggy support for the dotted
keyword.
N ot e
Internet Explorer 6 users will see dashed

borders instead of dotted borders under
links due to buggy support for the dotted
keyword.
Margins
Chapter 14, Thinking Inside the Box (Padding, Borders, and Margins)
275
Margins
The last remaining component of an element is its margin, which is an
optional amount of space that you can add on the outside of the border.
Margins keep elements from bumping into one another or the edge of the
browser window. You can even use margins to make space for another column
of content (we’ll see how that works in Chapter 16, Page Layout with CSS). In
this way, margins are an important tool in CSS-based page layout.
The side-specific and shorthand margin properties work much like the pad-
ding properties we’ve looked at already, however, margins have some special
behaviors to be aware of.
margin-top, margin-right, margin-bottom, margin-left
Values:
length measurement | percentage |
auto
|
inherit
Default:

auto
Applies to:
all elements
Inherits:
no
Notice that because we want the border to have the same color as the links, we do

not need to specify a color. However, if you try this on your own pages, you can easily
change the color and style of the bottom border.
As is often the case when you add a border to an element, it is a good idea to also
add a little padding to keep things from bumping together. Add some padding to
the bottom edges only, like so:
padding-bottom: .25em;
I’m noticing that there are a lot of redundant declarations here, and
although it isn’t necessary, let’s take the time to condense our style
sheet by grouping the selectors for these underline effects, then use
separate rules to change only the colors (and background for the :hover
state) . The final links section of the style sheet should look like this:
a:link, a:visited, a:hover, a:active {
text-decoration: none;
border-bottom: 1px dotted;
padding-bottom: .25em;
}
a:link, a:active {
color: #CC0000;
}
a:visited {
color: #921A66;
}

a:hover {
background-color: #FCF191;
color: #921A66;
}
See Figure 14-3 for what the page looks like.
Figure 14-13. The results of our border
additions.

×