For me, the best way to learn something has been to find a project to work on. I learned html/css first through customizing my Blogger blog, and then by building my own website (the iteration before the current one). Most recently, I wanted to build something to help readers navigate our recently created financial literacy page. As it is now, stories are sorted based on the date they were published, even though they can be written for very distinct age-based audiences. I had recently read a tutorial on using jquery to show and hide content and utilize hover effects, and thought it could easily be translated to an interactive that allowed users to show and hide content after selecting a particular age range.
My advice if you want to learn a new skill. First, find a project that you know you want to work on and that will hold your attention through the distractions that are bound to come up. Then, determine what skills will be needed to complete that project and go from there. It has been much easier for myself to address a need that already exists as opposed to trying to create a need because someone has said this is a skill I should have.