Sprite CSS avec image inline
13 messages
• Page 1 sur 1
-

Toma - WRInaute discret

- Messages: 208
- Inscription: 18 Jan 2006
Sprite CSS avec image inline
Bonjour,
Je me décide enfin à me mettre aux sprite CSS. Malheureusement, il s'avère que les images pouvant bénéficier de cette astuce doivent être de type block. Or j'utilise principalement des images inline, par exemple :
J'ai bien trouvé des astuces pour soit-disant faire du sprite inline mais c'est à base de wrarper, de clip et de float: left qui ne semble fonctionner que pour des images au début d'un texte. (apparemment la fonction clip ne fonctionne que pour une image positionnée en absolute, et c'est ça qui pose problème)
Quelqu'un a-t-il une solution pour remplacer mon image ici par une image sprite avec le même comportement (c'est à dire qu'elle reste au milieu du texte) ?
Je me décide enfin à me mettre aux sprite CSS. Malheureusement, il s'avère que les images pouvant bénéficier de cette astuce doivent être de type block. Or j'utilise principalement des images inline, par exemple :
- Code: Tout sélectionner
J'ai du texte et une image <img src="test.jpg> comme ça au milieu de mon texte.
J'ai bien trouvé des astuces pour soit-disant faire du sprite inline mais c'est à base de wrarper, de clip et de float: left qui ne semble fonctionner que pour des images au début d'un texte. (apparemment la fonction clip ne fonctionne que pour une image positionnée en absolute, et c'est ça qui pose problème)
Quelqu'un a-t-il une solution pour remplacer mon image ici par une image sprite avec le même comportement (c'est à dire qu'elle reste au milieu du texte) ?
- marchandeo
- WRInaute discret

- Messages: 110
- Inscription: 18 Jan 2011
Re: Sprite CSS avec image inline
Personnellement je ne vois pas trop l'intérêt des sprites dans le cas des images inline (tu as certainement peu d'images de ce type par page).
-

Toma - WRInaute discret

- Messages: 208
- Inscription: 18 Jan 2006
Re: Sprite CSS avec image inline
@Leonick : Oui, je sais c'est juste un exemple pour montrer que l'image est bien au milieu d'un texte.
@marchandeo : C'est vrai que l’intérêt est limité mais j'ai 6 petites icônes, ça ferait donc 5 requêtes de gagnées et aussi quelques octets sur la taille des images.
@milkiway : En fait pour résumer le problème, j'ai trouvé deux techniques pour faire des sprite :
- la classique avec les background-image mais pour faire ça il faut que l'élément soit de type block (par défaut ou avec display:block). Ça ne me convient pas car je veux que mes images se comportent comme des éléments inline.
- une méthode de sioux avec la fonction clip qui permet de faire ça avec l'élément image, mais il doit alors être en absolute il faut donc le mettre dans un div "wrapper" qui lui est alors positionné avec des float:left ou right pour faire illusion. Mais finalement l'image n'a pas un comportement inline. (d'ailleurs je vois pas l'intérêt de cette solution prétendument inline puisque ça revient à positionner un div...)
Voilà, je pense qu'il n'y a pas de solution mais je demande au cas ou quelqu'un aurait trouvé dans son coin !
@marchandeo : C'est vrai que l’intérêt est limité mais j'ai 6 petites icônes, ça ferait donc 5 requêtes de gagnées et aussi quelques octets sur la taille des images.
@milkiway : En fait pour résumer le problème, j'ai trouvé deux techniques pour faire des sprite :
- la classique avec les background-image mais pour faire ça il faut que l'élément soit de type block (par défaut ou avec display:block). Ça ne me convient pas car je veux que mes images se comportent comme des éléments inline.
- une méthode de sioux avec la fonction clip qui permet de faire ça avec l'élément image, mais il doit alors être en absolute il faut donc le mettre dans un div "wrapper" qui lui est alors positionné avec des float:left ou right pour faire illusion. Mais finalement l'image n'a pas un comportement inline. (d'ailleurs je vois pas l'intérêt de cette solution prétendument inline puisque ça revient à positionner un div...)
Voilà, je pense qu'il n'y a pas de solution mais je demande au cas ou quelqu'un aurait trouvé dans son coin !
-

Leonick - WRInaute accro

- Messages: 19599
- Inscription: 8 Aoû 2004
Re: Sprite CSS avec image inline
http://www.alsacreations.com/tuto/lire/1068-sprites-css-background-position.html mais il faut utiliser des id pour les images, comme j'ai indiqué au dessus
-

Toma - WRInaute discret

- Messages: 208
- Inscription: 18 Jan 2006
Re: Sprite CSS avec image inline
Leonick a écrit:http://www.alsacreations.com/tuto/lire/1068-sprites-css-background-position.html mais il faut utiliser des id pour les images, comme j'ai indiqué au dessus
Oui oui, je connais cette technique avec les background (j'avais dis background-image, désolé) mais le problème c'est qu'il y a toujours un display:block qui fait que l'élément n'a pas un comportement inline. Donc si on fait ça sur une image au milieu d'un texte, elle va à la ligne au lieu de rester dans le flux du texte.
-

Leonick - WRInaute accro

- Messages: 19599
- Inscription: 8 Aoû 2004
Re: Sprite CSS avec image inline
non, si ton image est déjà affichée, il te suffit de modifier les marges de l'image avec background-position: x y ; comme ça, tu n'as besoin que d'une imageToma a écrit:Oui oui, je connais cette technique avec les background (j'avais dis background-image, désolé) mais le problème c'est qu'il y a toujours un display:block qui fait que l'élément n'a pas un comportement inline
-

Leonick - WRInaute accro

- Messages: 19599
- Inscription: 8 Aoû 2004
Re: Sprite CSS avec image inline
et alors ? quel est le problème ? as-tu essayé avant de dire que ce n'était pas bon. D'abords sans mettre le display ou, si besoin, un display:inline ?Toma a écrit:Je crois qu'on ne se comprend pas. Je sais tout ce que tu dis, moi ce que je veux faire c'est la même chose mais sans utiliser "display:block" (en gros).
-

Toma - WRInaute discret

- Messages: 208
- Inscription: 18 Jan 2006
Re: Sprite CSS avec image inline
Bon, tant pis, c'est pas grave, j'arrive pas à vous expliquer. De toute façon j'ai contourné le problème en mettant mes textes dans des div et en faisant des float:left.
PS : le sprite css ne fonctionne pas avec des éléments inline car la propriété height n'est pas prise en compte pour ces éléments (si je ne me trompe pas) d'où mon problème.
PS : le sprite css ne fonctionne pas avec des éléments inline car la propriété height n'est pas prise en compte pour ces éléments (si je ne me trompe pas) d'où mon problème.
- coolbens
- Nouveau WRInaute

- Messages: 1
- Inscription: 17 Avr 2011
Re: Sprite CSS avec image inline
je crois avoir compris. Et quelles que soient les raisons pour lesquelles tu as besoin de ça, y a peut-être une solution.
imaginons une page traitant de... sauce bolognaise...
tu crées une image transparente (img_transp.png) la plus légère possible, qui te permettra d'utiliser la balise de "block inline" <img> comme suit :
t'inséreras cette image partout où tu voudras utiliser l'image sprite qui contient toutes les images dont tu as besoin dans ta page (ici trois images : des tomates, de la viande hâchée et des oignons). Cette image sprite (bolognaise.jpg) sera utilisée comme suit dans les styles :
concrètement l'image sprite contient trois images collées les unes aux autres en un bandeau horizontal
je n'ai pas testé avec tous les navigateurs
imaginons une page traitant de... sauce bolognaise...
tu crées une image transparente (img_transp.png) la plus légère possible, qui te permettra d'utiliser la balise de "block inline" <img> comme suit :
- Code: Tout sélectionner
<img src="img_transp.png" class="bolognaise" id="tomates" alt="Tomates pelées"/> (...) <img src="img_transp.png" class="bolognaise" id="viande" alt="Viande hâchée"/> (...) <img src="img_transp.png" class="bolognaise" id="oignons" alt="Oignons émincés"/>
t'inséreras cette image partout où tu voudras utiliser l'image sprite qui contient toutes les images dont tu as besoin dans ta page (ici trois images : des tomates, de la viande hâchée et des oignons). Cette image sprite (bolognaise.jpg) sera utilisée comme suit dans les styles :
- Code: Tout sélectionner
.bolognaise{background:url(bolognaise.jpg)}
#tomates{width:200px;height:100px;background-position:0}
#viande{width:100px;height:50px;background-position:0 200px}
#oignons{width:150px;height:100px;background-position:0 300px}
concrètement l'image sprite contient trois images collées les unes aux autres en un bandeau horizontal
je n'ai pas testé avec tous les navigateurs
13 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

