That's how it works.
You may be thinking of "lazy loading," where some scriptwork is used to delay downloading images until some time after the initial page load completes. This still requires all the data to be sent to the user — all of the data always has to be sent to the user eventually — but just not right away. This can have perceptible load time benefits, especially if whatever content you're loading won't be visible in the viewport initially anyway.