The ability to apply margins, borders, and padding to any element is one of the things that sets CSS so far above traditional Web markup. In the past, enclosing a heading in a colored, bordered box meant wrapping the heading in a table, which is a really bloated and awful way to create so simple an effect. It is this sort of power that makes CSS so compelling.
Unfortunately, this is also one of the areas where CSS support failed us in early implementations. Explorer 3 and Navigator 4 both had poor implementations of the box properties, although Navigator 4’s bugs are almost legendary and are certainly close to being epic in nature. As the year 2000 dawned, however, the situation was rapidly improving, thanks to Explorer 4 and 5, and Opera 3.6 (and later).
List styles, on the other hand, were fairly well supported from the very beginning of CSS implementations. The ability to set images for bullets was missing from many early user agents, but support for the various kinds of counting schemes has long been evident.
Although this chapter attempted to provide a clear view of how the box properties work, there are many nuances and details to the CSS formatting model. Including all of them would have dramatically slowed down the progress of the chapter. Instead, these are all covered in the next chapter, which is largely theoretical in nature but which provides a comprehensive explanation of the workings of the CSS formatting model.