[Mise à jour: Même si j'ai découvert cette astuce de façon indépendante, depuis j'ai appris que Thierry Coblence me battre pour elle. Vous pouvez trouver son 2009 article sur Une Liste à Part. De crédit lorsque le crédit est dû.]
Je sais que c'est une vieille question, mais j'ai rencontré un problème similaire que je ne résoudre qu'avec le CSS. Voici mon blog qui traite de la solution. Inclus dans le poste est un exemple vivant. Le Code est affiché de nouveau ci-dessous.
HTML:
<div id="container">
<div id="dummy"></div>
<div id="element">
some text
</div>
</div>
CSS:
#container {
display: inline-block;
position: relative;
width: 50%;
}
#dummy {
margin-top: 75%; /* 4:3 aspect ratio */
}
#element {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: silver /* show me! */
}