HTML nunca foi pensado para conter etiquetas para dar formato a un documento xa que pretende definir o contido dun documento pero non así o formato ou como se presenta ese contido. Así, con HTML definimos elementos como, por exemplo:
<h1>
Este é un encabezado
</h1>
<p>
Este é un parágrafo.
</p>
No HTML non poremos de que cor, tamaño de letra, borde... aparece ese parágrafo ou o título. Sen embargo, para chegar hasta aquí non foi un proceso rápido.
No estándar HTML 3.2 se engadiron etiquetas con atributos para establecer formatos, por exemplo unha desas etiquetas (<font>) permitía establecer unha cor a un texto. Con isto comezou un pesadelo para os desenvolvedores web, xa que nos grandes sitios web, onde se engadiron diferentes tipos de letra e cor para cada páxina, o proceso de programación Web converteuse nun proceso longo e custoso. Ademais, cando querían modificar os cores ou tipos de letra tiñan que volver a modificar cada unha das páxinas, e normalmente eras unhas cantas.
Para resolver este problema, o World Wide Web Consortium (W3C) creou CSS. A partir de HTML 4.0, todos as etiquetas e atributos de formato podían ser retiradas do documento HTML, e almacenarse nun arquivo CSS independente.
CSS define como os elementos HTML se van mostrar. Os estilos gárdanse normalmente nos arquivos CSS externos (follas de estilo externas) e permiten cambiar a aparencia e o deseño de todas as páxinas dun sitio Web, simplemente editando un só arquivo!