Browsers are very good at rendering basic HTML, but very few webpages are basic HTML anymore. As BigT said, most are quite complex now. Even a simple forum app like Discourse (which powers the SDMB) is a combination of Ruby on the server and a lot of Javascript on the client (your browser).
And because what’s running on your browser isn’t just the HTML markup anymore but a whole software app, they’re often developed like any other software app: by reusing a lot of third-party libraries and dependencies, which in turn have their own fourth-party libraries and dependencies, which in turn have their own, etc, etc. Your average webpage now probably has hundreds if not thousands of these libraries, arranged in a giant tree of dependencies and dependencies-of-dependencies-of-dependencies.
There might be one for handling drag-and-drop, another for uploading file uploads, another for handling inter-page navigation (instead of serving you different HTML files like the old days, most apps these just keep the HTML cached locally in your browser and then download small chunks of changed content, re-rendering it all locally against the cached HTML), yet another for video playback, another for error reporting, another for recording user analytics, another for advertising, another for notifications…
In theory all of these functionalities can be hand-coded to be fast and efficient. In practice pretty much no development team does that anymore and everyone just reaches for huge, bloated libraries that somebody else wrote because it can save a lot of time. Or these days, when AI codes something, it’ll often do the same thing.
For example, here is the dependency graph for OpenLayers, an app that displays a map (like Google Maps):
In the old days, something like Mapquest would’ve just done all of that hard work serverside and sent you a rendered image of the map. But now a lot of the work runs right in your browser.
Not every app is that complex, of course, but the same principle stands… every feature takes a whole tree of helper libraries that somebody else wrote, which in turn depends on other helpers that yet another group wrote… all the way down.
That said, though, most webpages still aren’t very demanding relative to other computing tasks. On a recent laptop (especially one with an ARM CPU) you can easily get like 8-12 hours of battery life while browsing the web, vs (for example) maybe 1-2 if you’re playing a demanding video game.
Most of the CPU usage is spiky — it might reach 100% for a few seconds, and then throttle down to almost zero. The memory usage is mostly just cache so that the webpages stay fast as you navigate between tabs & pages.