What makes it hard is that the "frontend development" space is always rapidly changing.
For instance you can still make sites that are based on static HTML and CSS and that have no Javascript or you can put a few little bits of Javascript in, or you can use a large number of techniques and frameworks to build something that is more like a mobile app than a web page, be it AngularJS or GWT, Enscripten, etc.
First there were the libraries like prototype and JQuery that would smooth over browser incompatibilities, but then the browsers got more compatible. For a long time there was a consensus that a macro language and calculations in CSS would make things worse. Then Blueprint came out and people were excited about that. Then people got sick of all web pages looking the same, and then people realized that the grid was the bad part of Blueprint, it was the other stuff that was good, but then you need a macro languages like LESS, and...
Thus you really have to set some goals for which technologies you want to master, because if you want to master them all you are going to be doing nothing but front-end development for a few years and then you will continuously be scrambling to keep up.