Je suis un débutant en programmation de rails, essayant de montrer de nombreuses images sur une page. Certaines images doivent être superposées à d'autres. Pour faire simple, disons que je veux un carré bleu, avec un carré rouge dans le coin supérieur droit du carré bleu (mais pas serré dans le coin). J'essaie d'éviter la composition (avec ImageMagick et similaire) en raison de problèmes de performances.
Je veux juste positionner les images qui se chevauchent les unes par rapport aux autres.
Comme exemple plus difficile, imaginez un odomètre placé à l'intérieur d'une image plus grande. Pour six chiffres, je devrais composer un million d'images différentes, ou tout faire à la volée, où tout ce qui est nécessaire est de placer les six images au-dessus de l'autre.
la source
Réponses:
Ok, après un certain temps, voici ce sur quoi j'ai atterri:
Comme la solution la plus simple. C'est:
Créez un div relatif qui est placé dans le flux de la page; placez d'abord l'image de base comme relative afin que le div sache quelle doit être sa taille; placez les superpositions comme absolues par rapport au coin supérieur gauche de la première image. L'astuce consiste à corriger les parents et les absolus.
la source
a
et "b" avait un ID deb
, ce code JavaScript (paramètrex
ety
par certains calculs) pourrait- il fonctionner pour changer la position deb
?Ceci est un regard nu sur ce que j'ai fait pour faire flotter une image sur une autre.
La source
la source
Voici du code qui peut vous donner des idées:
JSFiddle
Je soupçonne que la solution d'Espo peut être gênante car elle vous oblige à positionner les deux images de manière absolue. Vous voudrez peut-être que le premier se positionne dans le flux.
Habituellement, il existe un moyen naturel de le faire est CSS. Vous placez position: relative sur l'élément conteneur, puis positionnez absolument les enfants à l'intérieur. Malheureusement, vous ne pouvez pas mettre une image dans une autre. C'est pourquoi j'avais besoin d'un conteneur div. Notez que j'en ai fait un flotteur pour qu'il s'adapte automatiquement à son contenu. Faire en sorte qu'il s'affiche: le bloc en ligne devrait également fonctionner en théorie, mais la prise en charge du navigateur y est médiocre.
EDIT: J'ai supprimé les attributs de taille des images pour mieux illustrer mon propos. Si vous souhaitez que l'image du conteneur ait ses tailles par défaut et que vous ne connaissiez pas la taille à l'avance, vous ne pouvez pas utiliser l' astuce d'arrière - plan . Si vous le faites, c'est une meilleure façon de procéder.
la source
Un problème que j'ai remarqué qui pourrait provoquer des erreurs est que dans la réponse de rrichter, le code ci-dessous:
devrait inclure les unités px dans le style, par exemple.
A part cela, la réponse a bien fonctionné. Merci.
la source
Vous pouvez absolument vous positionner par
pseudo elements
rapport à leur élément parent.Cela vous donne deux couches supplémentaires pour jouer avec chaque élément - il est donc facile de positionner une image au-dessus d'une autre - avec un balisage minimal et sémantique (pas de divisions vides, etc.).
balisage:
css:
Voici une DÉMO EN DIRECT
la source
Le moyen le plus simple consiste à utiliser background-image, puis à simplement mettre un <img> dans cet élément.
L'autre façon de faire est d'utiliser des couches CSS. Il existe une tonne de ressources disponibles pour vous aider, recherchez simplement les couches CSS .
la source
Style en ligne uniquement pour plus de clarté ici. Utilisez une vraie feuille de style CSS.
la source
Il peut être un peu tard mais pour cela vous pouvez faire:
HTML
TOUPET
la source
@ buti-oxa: Ne pas être pédant, mais votre code n'est pas valide. Le HTML
width
et lesheight
attributs ne permettent pas les unités; vous pensez probablement au CSSwidth:
et auxheight:
propriétés. Vous devez également fournir un type de contenu (text/css
; voir le code d'Espo) avec la<style>
balise.Si vous laissez
px;
les attributswidth
et,height
un moteur de rendu peut rechigner.la source
Créez un div relatif qui est placé dans le flux de la page; placez d'abord l'image de base comme relative afin que le div sache quelle doit être sa taille; placez les superpositions comme absolues par rapport au coin supérieur gauche de la première image. L'astuce consiste à corriger les parents et les absolus.
la source