Borders define the outside edge of elements and are usually used to apply a
decorative effect to the 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.
Now, border syntax can sometimes be quite verbose, as you can 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 ten values: none, hidden, dotted, dashed,
solid, double, groove, ridge, inset, and outset.
None and hidden are very similar, except for when tables come in the play,
where there are some certain differences regarding when borders are drawn
around table cells.
Now 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 affects 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 element's foreground and background. While
most border style properties will display the color specified, a few of the 3D-
like 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 syntax 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 reason 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.