How to Create CSS Lists

Lists come in two basic flavors: unordered and ordered. However, CSS allows for more list customization than HTML — to the extent that even images can be used as bullet points for unordered lists!.

CSS List Style Type


If you want to use something different from the default numbering of ordered lists, or the bullets/discs of unordered lists, then all you have to do is choose a different style for your lists. CSS allows you to select from a wide variety of different list item shapes.

  • Unordered list styles: square, circle, disc (default), and none
  • Ordered list styles: upper-alpha, lower-alpha, upper-roman, lower-roman, decimal (default), and none

Css Code:

ol { list-style-type: upper-roman; }
ul { list-style-type: circle; }


Here is an ordered list:

  • I. This list is
  • II. using roman
  • III. numerals
  • IV. with CSS!

and now an unordered list:

  • This list is
  • using circle types
  • with CSS!

CSS List With Images

As we stated in the introduction, CSS lists allow you to insert an image in place of the normal bullets. A good choice for a bullet image would one that is smaller than the height of your text and is a relatively simple/plain graphic.

CSS Code:

ul { list-style-image: url("listArrow.gif"); }
ol { list-style-image: url("listArrow2.gif"); }


Here is an unordered list:

  • (listArrow.gif)This list is
  • (listArrow.gif)using a picture with CSS!

and now an ordered list:

  • (listArrow2.gif)This list is
  • (listArrow2.gif)using a picture
  • (listArrow2.gif)with CSS!

As you can see, it does not matter if the lists are <ul> or <ol> when using images. Nevertheless, it is a good coding practice to only use images for an unordered list. Ordered lists usually have an incremented (growing) value that appears next to each list item and you can’t do this with just one image.

CSS List Position

With CSS, it is possible to alter the indentation that takes place with your list items. See the example below for the trick of indenting your lists.

CSS Code:

ul { list-style-position: inside; }
ol { list-style-position: outside; }


  • This list is
  • using inside
  • positioning with CSS!

and now an ordered list:

  • 1. This list is
  • 2. using outside
  • 3. positioning with CSS!

Note: “Outside” is actually the default setting for indentation.

List: All in One

It is possible to combine the above CSS techniques into one line of CSS. This is useful if you would like to have a list-style-type take the place of your list image, if the image is not able to be loaded.

CSS Code:

ul { list-style: upper-roman inside url("");}


  1. I. This list’s image did
  2. II. NOT load correctly
  3. III. But because we chose to include
  4. IV. A CSS list type, we avoided a bland list!