As originally developed, HTML would specify the structure of a document, but the actual appearance of the parts was largely up the browser. This frustrated designers who wanted more control over appearance. Consequently, HTML started sprouting more tags and attributes to control appearance. It didn't help when different browsers added different ones, making it hard to know if your careful design was going to be followed in any particular browser
Eventually, Cascading Style Sheets were added to deal with this problem. CSS is actually a separate language, often embedded inside HTML, which expresses the appearance of the various HTML elements. The idea is to use HTML to express the structure of the document, and CSS to control its appearance.