Bonjour à tous,
voici une question qui n'est traitée nul part et pour cause, sans doute qu'il n'y a pas (encore ?) de solution. Mais je souhaitais tout de même la soumettre pour m'en assurer.
L'idée est la suivante : je récupère une série d'articles contenant des images. Je n'ai pas la main sur le code html de ces articles mais je veux les rendre joli. Donc là pas de soucis, j'utilise du CSS.
Maintenant, l'idée est de rendre les grandes images (supérieures à 500px par exemple) de type bloc, leur appliquer un petit ombrage, et les arrondir légèrement. Le problème est que pour les petites images (de type smiley par exemple) je ne veux pas appliquer cet effet.
J'aimerai donc avoir quelque chose de la forme :
Évidemment cela ne marche pas vu que :
1. La condition >= n'existe pas
2. width fait référence à l'attribut et non pas à la taille réelle
Mais savez-vous si il existe une solution à ce problème ?
Merci d'avance !
Edit : solutions trouvées
1. Passer par du javascript en ajoutant une classe big par exemple aux images de plus de 500px. Un exemple en JQuery pourrait être :
Et le CSS correspondant :
2. Seulement en CSS en se basant sur le chemin d'accès aux images. Cela suppose donc d'avoir la main sur l'emplacement de ces images. On passe ici par les sélecteurs CSS de type regex :
Modifié par Fargo (13 Mar 2013 - 16:59)
voici une question qui n'est traitée nul part et pour cause, sans doute qu'il n'y a pas (encore ?) de solution. Mais je souhaitais tout de même la soumettre pour m'en assurer.
L'idée est la suivante : je récupère une série d'articles contenant des images. Je n'ai pas la main sur le code html de ces articles mais je veux les rendre joli. Donc là pas de soucis, j'utilise du CSS.
Maintenant, l'idée est de rendre les grandes images (supérieures à 500px par exemple) de type bloc, leur appliquer un petit ombrage, et les arrondir légèrement. Le problème est que pour les petites images (de type smiley par exemple) je ne veux pas appliquer cet effet.
J'aimerai donc avoir quelque chose de la forme :
img[width>=500] {
display: block;
width: 100%;
box-shadow: 0 0 5px #000;
border-radius: 3px;
}
Évidemment cela ne marche pas vu que :
1. La condition >= n'existe pas
2. width fait référence à l'attribut et non pas à la taille réelle
Mais savez-vous si il existe une solution à ce problème ?
Merci d'avance !
Edit : solutions trouvées
1. Passer par du javascript en ajoutant une classe big par exemple aux images de plus de 500px. Un exemple en JQuery pourrait être :
$("img").each(function() {
if($(this).width() > 500) {
$(this).addClass("big");
}
});
Et le CSS correspondant :
img.big {
display: block;
width: 100%;
box-shadow: 0 0 3px #666;
border-radius: 3px;
}
2. Seulement en CSS en se basant sur le chemin d'accès aux images. Cela suppose donc d'avoir la main sur l'emplacement de ces images. On passe ici par les sélecteurs CSS de type regex :
img[src*="big/"] { /* le code CSS précédent par exemple */ }
Modifié par Fargo (13 Mar 2013 - 16:59)