- [Voiceover] Borders define the outside edge of elements,
and are usually used to apply
a decorative effect to specific elements.
Element borders are usually defined by three properties.
Style, width, and color.
Much like margins and padding, borders can be defined
for the top, right, bottom, and left sides individually,
or defined for the entire element at the same time.
A border SYNTAX can sometimes be quite verbose
as you specify width, style, and color
for each individual side.
Now because of this authors typically use
border shorthand notation that allows you to set
all three border properties at the same time.
The important thing to remember about borders,
is that they do affect the overall width of an element.
Border widths begin at the edge
of padding widths, and then extend outward.
It's easy to forget about a one pixel border on an element,
but this is often the culprit for breaking layouts
or causing elements to shift unexpectedly,
so when authoring CSS, be sure to account
for border widths when planning layouts.
Now border width is pretty self explanatory,
but border styles and border colors deserve a closer look.
Border styles can be set in one of 10 values.
None, hidden, dotted, dashed, solid,
double, groove, ridge, inset, and outset.
None and hidden are very similar, except for when tables
come into play, where there are some subtle differences,
regarding when borders are drawn around table cells.
A solid, dotted, and dashed create a single flat line,
that's either solid, broken into dots, or broken into dashes
Although support for border styles is almost complete
in browsers, some older browsers don't support
the dotted value, resulting in dashed lines when found.
The remaining values, double, groove,
ridge, inset, and outset, create dimensional line effects
that often require width values greater than one.
The border color property, allows you to define
the color of the border independently of
the color of the elements foreground and background.
While most border style properties will display
the color specified, a few of the 3D lack values,
will actually use the color as a highlight value
or not at all, depending upon browser implementation.
Most designers use borders for decorative effects,
or as a way of providing visual separation between elements.
Borders can also be used as a way of creating text rules
between blocks of text, and as a way of replacing
the default underlines, under linked text.
A relatively new addition to borders,
is the border image property.
This allows you to specify an image, that will be sliced
and then aligned with the elements corners,
and repeated or stretched in the middle sections.
The SNYTAX is a bit too much to cover
in a general overview, and browser support is just now
starting to solidify, but this is definitely a technique
that should be on your radar as a designer.
Before we move on, I also want to take a moment
to discuss the difference between a border and an outline.
The outline property has been a part of
the CSS specification, since CSS 2.0,
but it's only very rarely discussed in tutorials.
One of the biggest reasons for this, is that unlike borders,
outlines can only be set on the entire element,
not the individual sides like borders can.
You can however, set width, style, and color,
just like the border property.
One other intriguing difference
between borders and outlines is that outlines
do not add to the total width of an element.
This rather odd behavior means that outlines
will often overlap other elements when
they come in contact with them.
However, outlines can be set on elements without
breaking layouts, or causing other elements to shift.
Making them valuable in those situations.
The biggest reasons for authors ignoring
the outline property however,
is its lack of broad support among browsers.
Safari, Opera, and Chrome have supported it for some time,
but Firefox's support is still a little bit buggy,
and Internet Explorer has only recently supported it.
Still, it's worth mentioning, since it gives you
an alternative to using the border property.