A site that I like to point people to is dontfeartheinternet.com. It has great videos to learn the basics.
There are lots of people that blog interesting stuff, but it's kinda hard to name just a few. Sooner or later you'll find them by Googling or on Twitter.
I'm not really into reading books and rather learn by just experimenting. Maybe tools like codepen.io or cssdeck.com let you play around and see the result instantly updated.
There are also some online learning services like codecademy.com or teamtreehouse.com that teaches more in an interactive way.
And last, but not least: Going to an actual school. It's not really a must and you can certainly start by learning on your own, but it gives you some basic knowledge that is a great foundation. Just remember, once you're out of school, it doesn't mean you can stop learning. Actually the opposite.
I'm on the experimentation team here.
The primary benefit of school (programming, for me, but it still applies) was that you have assigned tasks and goals, which means you have that incentive to keep learning, and progressing. After leaving, I had to find the things that excite myself, which was experimentation. No doubt people can get the same motivation to push forward from books ;)