IDs can only be used once per page, so they are useful for major structural elements like "header" and "footer" (until HTML5 comes in and replaces those with native elements).
Classes can be used multiple times, and you can use multiple classes per element. They should be kept fairly generic - so instead of, say, warningMessage
you could create one style message
with the basic layout style, and then warning
, info
, and error
styles with different colours. Then use <div class="message warning">etc</div>
You should also use HTML elements where applicable. Instead of <span class="title">
, use a heading tag like <h2>
.
As others have said, you can use underscores or hyphens or camel case - i.e. my_style
or my-style
or myStyle
. Just choose a convention and stick to it (personally I use my-style
). Jitendra suggested in a comment that lowercase is better when you're using gzip compression, which is true all round - for font names, hex colours, and it's worth naming files (e.g. background images) in lowercase anyway.
Sometimes coming up with good names can be hard. Think about other places you might use the same formatting. For example, if you want to put the author and date of an article below the title in smaller grey text, you might use .authorAndDate
, but a better way would be .byline
. This is still quite descriptive, and can be used in other places too, say, image captions.