Comment puis-je placer une image sur le dessus de l'autre en HTML?
Je suis un débutant sur les rails de la programmation, en essayant de montrer plusieurs images sur une page. Certaines images sont à poser sur le dessus des 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 trop dans le coin). Je suis en essayant d'éviter de composition (avec ImageMagick et similaires) en raison de problèmes de performances.
Je veux juste la position de chevauchement des images par rapport à une autre.
Plus difficile exemple, imaginez un compteur kilométrique, placé à l'intérieur d'une image plus grande. Pour les six chiffres, j'aurais besoin de composite d'un million de différentes images, ou tout faire à la volée, où tout ce qui est nécessaire est de placer les six images sur le dessus de l'autre.
- vous pourriez faire le compteur avec une image à l'aide de sprites
Vous devez vous connecter pour publier un commentaire.
Ok, après quelques temps, voici ce que j'ai atterri sur:
CSS:
HTML:
Comme la solution la plus simple. Qui est:
Créer un relatif à la div qui est placé dans le flux de la page; la place de l'image de base, d'abord en tant que parent, de sorte que la div sait comment grand il devrait être; placez les superpositions comme des absolus par rapport à l'angle supérieur gauche de la première image. L'astuce consiste à amener les parents et les absolus correcte.
a
et "b" a un ID deb
, pourrait ce code JavaScript (réglagex
ety
par certains de calcul), le travail pour changer la position deb
?C'est un barebones regardez ce que j'ai fait flotter une image sur une autre.
CSS:
HTML:
Source
Voici le code qui peut vous donner des idées:
JSFiddle
Je soupçonne que Espo de la solution peut être gênant, car il vous oblige à positionner les deux images absolument. Vous souhaitez peut-être le premier à se positionner dans le flux.
Habituellement, il est un moyen naturel de le faire est de CSS. Vous mettez en position: relative sur l'élément conteneur, et puis absolument position des enfants à l'intérieur. Malheureusement, vous ne pouvez pas mettre une image à l'intérieur de l'autre. C'est pourquoi j'ai besoin div conteneur. L'avis que j'en ai fait un flotteur pour le faire ajuster automatiquement à son contenu. Affichage: inline-block devrait théoriquement fonctionner aussi bien, mais l'appui de navigateur pauvres.
EDIT: j'ai supprimé les attributs de taille des images pour illustrer mon point de plus. Si vous souhaitez que le conteneur de l'image pour avoir ses tailles par défaut et que vous ne connaissez pas la taille à l'avance, vous ne pouvez pas utiliser le fond de truc. Si vous le faites, c'est une meilleure façon d'aller.
Seul problème que j'ai remarqué qui pourrait provoquer des erreurs, c'est que dans rrichter réponse, le code ci-dessous:
devrait inclure les unités px dans le style, par exemple.
Autre que cela, la réponse a bien fonctionné. Merci.
Vous pouvez absolument position
pseudo elements
par rapport à leur élément parent.Cela vous donne deux couches supplémentaires pour jouer avec tous les éléments - ainsi, le positionnement d'une image sur le dessus de l'autre devient facile avec un minimum et un balisage sémantique (pas de vide divs etc).
balisage:
css:
Voici un DÉMO
Le moyen facile de le faire est d'utiliser background-image, puis vient de mettre un <img> dans cet élément.
L'autre façon de faire est à l'aide de calques css. Il ya une tonne de ressources disponibles pour vous aider avec ceci, il suffit de chercher pour calques css.
De style en ligne uniquement à des fins de clarté ici. L'utilisation d'une feuille de style CSS.
Il peut être un peu tard, mais pour ce que vous pouvez faire:
HTML
SASS
@buti-oxa: ne Pas être pédant, mais ton code n'est pas valide. Le HTML
width
etheight
attributs ne permettent pas d'unités; vous êtes susceptibles de penser de la CSSwidth:
etheight:
propriétés. Vous devez également fournir un contenu de type (text/css
; voir Espo du code) avec le<style>
tag.Laissant
px;
dans lewidth
etheight
attributs peut provoquer un moteur de rendu à la besogne.