Home > Articles > Fancy Paragraphs With CSS

Fancy Paragraphs With CSS

skip to navigation

This section of the site features articles published between 2002 and 2004. They remain here for reference purposes and may contain information that is out of date.

Long pages of text look dull. Often users don't want to trudge through them, and all the time you spent carefully crafting those sentences goes to waste.

But with just a few simple CSS tricks we'll discuss here, you can break your pages up so they don't seem as daunting. Even better, you only have to write the code once -- and then you can re-use it across your site as many times as you like.

I'll assume that you already have a basic understanding of CSS.

Margins, Padding and Borders

If you've already grasped the concept of cellpadding, cellspacing and borders in HTML tables, then relax -- this isn't much different. The diagram below shows how the margin, padding and border properties relate to your paragraphs (or to any other element, for that matter).

An image showing a paragraph surrounded by padding, then a border, then margin.

The margin defines the space outside the border. The padding defines the space between the border and the content.

Although it's not shown here, the background colour fills the paragraph up to the border. By controlling the values of the padding and the margin you gain full control of the spacing around your paragraphs. But it doesn't stop there; CSS also gives you the ability to control the value for each side individually! Let's see how.

Top, bottom, left and right

To further increase your control CSS provides a facility that tables don't. CSS allows you to individually control the border, padding and margin values for each side of the block, through the following 12 properties:

padding-top
padding-bottom
padding-left
padding-right
margin-top
margin-bottom
margin-left
margin-right
border-top
border-bottom
border-left
border-right

Your decision to set different combinations of these properties will depend on what you are trying to achieve, and which properties provide the control you need. Bare in mind that the side-specific (left or right) properties listed above don't work in older browsers.

Putting It To Use

Let's take a look at an example to see how you can put this to use. We're going to spice up a paragraph to make it look like the one below.

An image of a paragraph with a yellow background and a blue border. The paragraph is separated from the flow of text by spacing above and to the sides.

The Border

For the border we're using a setting that's 2 pixels wide, and solid, with an RGB colour value of 0066FF. The CSS rule we use to achieve this is:

p.excerpt{border: 2px solid #0066FF;}

The (X)HTML code to make use of this rule is:

<p class="excerpt">They went in single file, running....</p>

When it's used in this manner, the border property sets 12 separate properties for you.

The following rule allows you to set them all individually, but achieves the same effect as the one above.

p.excerpt{
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 2px;
border-left-width: 2px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-top-color: #0066FF;
border-right-color: #0066FF;
border-bottom-color: #0066FF;
border-left-color: #0066FF;
}

As you can see, using the border value is a lot easier in this situation, but the extra control is available when you need it.

The other alternative is:

p.excerpt{
border-top: 2px solid #0066FF;
border-bottom: 2px solid #0066FF;
border-left: 2px solid #0066FF;
border-right: 2px solid #0066FF;
}

As I mentioned earlier, the code you use will depend on what you're trying to achieve.

The Background

Setting the background colour is easy. Simply set the background-color property to the value you want -- in this case, I've used an RGB value of FFCC33. Our rule now becomes:

p.excerpt{
border: 2px solid #0066FF;
background-color:#FFCC33;
}

With the above rule our paragraph looks like this:

An image of a paragraph with a yellow background and a blue border. The paragraph is not separated from the flow of text by any spacing other than the standard spacing for paragraphs.

The Spacing

Now all that's left to do is to set the spacing to complete the effect. We're going to use the same width padding on all four sides so we don't need the side-specific properties. With the padding set to 5 pixels our rule becomes:

p.excerpt{
border: 2px solid #0066FF;
background-color:#FFCC33;paddingx;
}

To get the margin effect we'd like we need to use 20 pixels on the left and right, but only 5 for the top and bottom, so we need to set each property individually:

p.excerpt{
border: 2px solid #0066FF;
background-color:#FFCC33;
padding:5px;margin-top:5px;
margin-bottom:5px;
margin-left:20px;
margin-right:20px;
}

That's it! Our paragraph now stands out and breaks our dull page of content up nicely, without any adverse effects. Non-CSS browsers will just ignore the CSS, without throwing any errors.

You can download the XHTML or the Style Sheet for the example above. Feel free to do whatever you want with it, and have fun with CSS!