First learn design, then learn the tools(CSS). Preferably using a book that has nothing to do with web design. Problem with most developers is that we only learn the tool and forget to learn design. To understand how to properly mix colours, you need to study colour theory. To understand how to use the right fonts, spacing etc, you need to study typography. Also learn about image types. I don't understand why most web design books want to dive straight into CSS before design.
After that, you need hours and hours of practice in order to be good at it. We learn by doing.
After that, you need hours and hours of practice in order to be good at it. We learn by doing.