Firstly I'll share a little of my background so you know where I'm coming from. I've been working on the web since 2008. I mostly taught myself by inspecting the source code of websites and ended up specialising in web development at university. My first job was as a junior front end developer at a small design agency in Hampshire, England. A few years later I decided to take what I'd learned, go it alone and started CodeKnight in 2013.
I was recently asked if I could give some advice to someone wanting to get in to a career as a web developer. Hopefully the sections below are also useful for you if you're in that position!
I've found that one of the main reasons I've managed to stay afloat as a freelancer (and it transfers to full time roles too) is not about development skill, but people skills. One of the biggest things people value when working with devs is their ability to communicate what they're working on, any issues they have or foresee and the ability to translate their development knowledge in to 'non-geek' language.
Developers who don't communicate are a pain to keep chasing, and if they're proactive about what they're doing it makes them way easier to work with.
Self confidence can be difficult to develop, but being able to talk about yourself and your abilities in a positive way makes you look good, and I think it rarely comes across as 'talking yourself up' as you think it might.
Web development is a very general term, and there are several different directions you can take if you're just looking in to it. I'd recommend looking in to everything you see at least just a little, and find out what you think is interesting. After building a site from scratch, including the content management system, devops and front end, I knew I'd find front end way more interesting than the application side of stuff.
If you need some more direction about what to learn, I can recommend looking at a range of job listings from companies that you might want to work for. Sometimes these can be a little unrealistic, but it's useful to see what sort of skills and technologies they're asking for so you know what to focus on.
As a freelancer, you have pretty much complete choice over how you build your own websites, so you only need to learn a specific framework if you're going to work for a company that uses it.
It seems there's a new JS framework every 6 months, and I don't think it's useful to keep using a new one on every project just because it's new and cool. That being said, full stack JS developers are in demand and well paid, so it's an option.
The web changes pretty regularly, and so do the tools used to build it. In real terms this means you'll be picking up new things naturally as part of your career, but it's also a mindset. Practically every project I work on has something in it that I haven't done before, and you need to be able to pick up the skill or technology during a project, within reason.
I also think it's worth saying that maintainability is really important in a web career, so try and have some standards of how you do things. It'll make it easier to come back to a project a year later to make updates if you don't completely change your approach every new project.
Depending on what you want to do, I would recommend that you look in to content management systems too. Most websites will be running on one, and depending on what you end up doing, you'll probably be working with one or several pretty heavily. Personally I've been working with Craft CMS almost exclusively for about 4 years, but Statamic, Perch and Grav are also interesting. I strongly dislike WordPress, but you may find it useful to at least familiarise yourself with it so you can have your own opinion about using it.
Lastly, I thought it might be useful to list the skills I use in a normal client web project. Bear in mind that I'm a freelance front end developer, so it may be that only some of this applies to you.
This article contains referral links to the services I use.