Если вы сделаете изображение фоновым изображением div в CSS, когда для этого div установлено значение 'display: none', изображение не будет загружаться.
Вы можете сделать следующее для чистого CSS-решения, оно также заставляет окно img фактически вести себя как поле img в настройке адаптивного дизайна (для этого и нужен прозрачный png), что особенно полезно, если ваш дизайн использует отзывчивый изображения с динамическим изменением размера.
<img style="display: none; height: auto; width:100%; background-image:
url('img/1078x501_1.jpg'); background-size: cover;" class="center-block
visible-lg-block" src="img/400x186_trans.png" alt="pic 1">
Изображение будет загружено только тогда, когда медиазапрос, связанный с visible-lg-block, запущен и отображается: ни один не изменяется на display: block. Прозрачный png используется для того, чтобы браузер мог установить соответствующие соотношения высоты: ширины для вашего блока (и, следовательно, фонового изображения) в плавном дизайне (высота: авто; ширина: 100%).
1078/501 = ~2.15 (large screen)
400/186 = ~2.15 (small screen)
Таким образом, вы получите что-то вроде следующего для 3 разных видов:
<img style="display: none; height: auto; width:100%; background-image: url('img/1078x501_1.jpg'); background-size: cover;" class="center-block visible-lg-block" src="img/400x186_trans.png" alt="pic 1">
<img style="display: none; height: auto; width:100%; background-image: url('img/517x240_1.jpg'); background-size: cover;" class="center-block visible-md-block" src="img/400x186_trans.png" alt="pic 1">
<img style="display: none; height: auto; width:100%; background-image: url('img/400x186_1.jpg'); background-size: cover;" class="center-block visible-sm-block" src="img/400x186_trans.png" alt="pic 1">
И при загрузке во время начальной загрузки загружаются только изображения по умолчанию с размером области просмотра мультимедиа, а затем, в зависимости от области просмотра, изображения будут загружаться динамически.
И без JavaScript!