Images are usually the heaviest part of a page. Responsive Images in Depth diagrams how the browser selects among candidates: srcset with sizes picks a resolution of the same picture, while <picture> with <source media> picks a different crop per layout (art direction):
<picture>
<source media="(width >= 48rem)" sizes="(width >= 75rem) 70rem, 100vw"
srcset="harbor-wide-1200.jpg 1200w, harbor-wide-2400.jpg 2400w">
<img src="harbor-tall-600.jpg" srcset="harbor-tall-600.jpg 600w, harbor-tall-1200.jpg 1200w"
sizes="100vw" width="600" height="750" alt="Fishing boats in the harbor at dawn">
</picture>The first <source> whose media and type match wins; the <img> is the fallback and the element you style. Keep width and height on fluid images so the browser reserves the aspect ratio before the file arrives, and match <source> breakpoints and sizes to the layout your CSS creates.