Isso me frustra há anos. Minha correção CSS define uma imagem de plano de fundo no img. Quando uma imagem dinâmica srcnão é carregada em primeiro plano, um espaço reservado é visível na imgBG. Isso funciona se as imagens têm um tamanho padrão (por exemplo height, min-height, widthe / ou min-width).
Você verá o ícone de imagem quebrada, mas é uma melhoria. Testado no IE9 com sucesso. O iOS Safari e o Chrome nem mostram um ícone quebrado.
.dynamicContainer img {
background: url('/images/placeholder.png');
background-size: contain;
}
Adicione um pouco de animação para dar srctempo para carregar sem um piscar de fundo. O Chrome desvanece-se suavemente no fundo, mas o Safari da área de trabalho não.
.dynamicContainer img {
background: url('/images/placeholder.png');
background-size: contain;
-webkit-animation: fadein 1s;
animation: fadein 1s;
}
@-webkit-keyframes fadein {
0% { opacity: 0.0; }
50% { opacity: 0.5; }
100% { opacity: 1.0; }
}
@keyframes fadein {
0% { opacity: 0.0; }
50% { opacity: 0.5; }
100% { opacity: 1.0; }
}