Le code suivant s'affiche correctement dans Chrome ou IE (l'image fait 200px de large). Dans Firefox et Opera, le style max-width
est complètement ignoré. Pourquoi cela se produit-il et y a-t-il une bonne solution de contournement ? De plus, quelle méthode est la plus conforme aux normes ?
Remarque
Une solution possible pour cette situation particulière est de définir max-width
à 200px
. Cependant, il s'agit d'un exemple plutôt artificiel. Je cherche une stratégie pour un conteneur de largeur variable.
div { display: table-cell; padding: 15px; width: 200px; }
div img { max-width: 100%; }
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec facilisis
ante, facilisis posuere ligula feugiat ut. Fusce hendrerit vehicula congue.
at ligula dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
leo metus, aliquam eget convallis eget, molestie at massa.
[Mise à jour]
Comme l'a indiqué mVChr ci-dessous, la spécification du w3.org indique que max-width
ne s'applique pas aux éléments inline
. J'ai essayé d'utiliser div img { max-width: 100%; display: block; }
, mais cela ne semble pas résoudre le problème.
[Mise à jour]
Je n'ai toujours pas de solution pour ce problème. Cependant, j'utilise le piratage JavaScript suivant pour résoudre mes problèmes. Essentiellement, il recrée la situation ci-dessus et vérifie si le navigateur prend en charge max-width
dans display: table-cell
. (L'utilisation d'un data uri évite une requête http supplémentaire. Celui ci-dessous est un bmp 3x3.)
jQuery( function ( $ ) {
var img = $( "" )
.appendTo(
$( "" )
.appendTo( "body" )
);
$.support.tableCellMaxWidth = img.width() == 1;
img.parent().remove();
});