Sou iniciante na programação de trilhos, tentando mostrar muitas imagens em uma página. Algumas imagens são colocadas em cima de outras. Para simplificar, digamos que eu queira um quadrado azul, com um quadrado vermelho no canto superior direito do quadrado azul (mas não apertado no canto). Estou tentando evitar a composição (com o ImageMagick e similares) devido a problemas de desempenho.
Eu só quero posicionar imagens sobrepostas uma em relação à outra.
Como um exemplo mais difícil, imagine um odômetro colocado dentro de uma imagem maior. Para seis dígitos, eu precisaria compor um milhão de imagens diferentes ou fazer tudo rapidamente, onde tudo o que é necessário é colocar as seis imagens em cima da outra.
html
css
optimization
graphics
rrichter
fonte
fonte
Respostas:
Ok, depois de algum tempo, aqui está o que eu cheguei:
Como a solução mais simples. Isso é:
Crie uma div relativa que é colocada no fluxo da página; coloque a imagem base primeiro como relativa, para que a div saiba qual deve ser o tamanho; coloque as sobreposições como absolutas em relação à parte superior esquerda da primeira imagem. O truque é acertar os parentes e os absolutos.
fonte
a
e "b" tivesse um IDb
, esse código JavaScript (configuraçãox
e,y
por algum cálculo) funcionaria para alterar a posição deb
?Este é um aspecto básico do que eu fiz para flutuar uma imagem sobre a outra.
Fonte
fonte
Aqui está o código que pode lhe dar idéias:
JSFiddle
Suspeito que a solução da Espo possa ser inconveniente porque exige que você posicione as duas imagens absolutamente. Você pode querer que o primeiro se posicione no fluxo.
Geralmente, existe uma maneira natural de fazer isso é CSS. Você coloca position: relative no elemento container e, em seguida, posiciona absolutamente as crianças dentro dele. Infelizmente, você não pode colocar uma imagem dentro de outra. É por isso que eu precisava de div de contêiner. Observe que eu fiz um float para ajustá-lo automaticamente ao seu conteúdo. Fazendo com que seja exibido: o bloco em linha também deve, teoricamente, funcionar, mas o suporte ao navegador é ruim lá.
Edição: Eu apaguei atributos de tamanho das imagens para ilustrar melhor o meu ponto. Se você deseja que a imagem do contêiner tenha seus tamanhos padrão e não saiba o tamanho antes, não poderá usar o truque em segundo plano . Se o fizer, é o melhor caminho a percorrer.
fonte
Um problema que notei que poderia causar erros é que, na resposta de rrichter, o código abaixo:
deve incluir as unidades de px no estilo, por exemplo.
Fora isso, a resposta funcionou bem. Obrigado.
fonte
Você pode posicionar absolutamente em
pseudo elements
relação ao elemento pai.Isso oferece duas camadas extras para você brincar com cada elemento - assim, fica fácil posicionar uma imagem sobre a outra - com marcação mínima e semântica (sem divs vazias etc.).
marcação:
css:
Aqui está uma demonstração ao vivo
fonte
A maneira mais fácil de fazer isso é usar a imagem de fundo e, em seguida, basta colocar um <img> nesse elemento.
A outra maneira de fazer é usar camadas de css. Há muitos recursos disponíveis para ajudá-lo com isso, basta procurar por camadas de css .
fonte
Estilo em linha apenas para maior clareza aqui. Use uma folha de estilo CSS real.
fonte
Pode ser um pouco tarde, mas para isso você pode fazer:
HTML
SASS
fonte
@ buti-oxa: Não é pedante, mas seu código é inválido. O HTML
width
e osheight
atributos não permitem unidades; você provavelmente está pensando no CSSwidth:
e nasheight:
propriedades. Você também deve fornecer um tipo de conteúdo (text/css
; consulte o código da Espo) com a<style>
tag.Deixar
px;
nos atributoswidth
eheight
pode fazer com que um mecanismo de renderização seja recusado.fonte
Crie uma div relativa que é colocada no fluxo da página; coloque a imagem base primeiro como relativa, para que a div saiba qual deve ser o tamanho; coloque as sobreposições como absolutas em relação à parte superior esquerda da primeira imagem. O truque é acertar os parentes e os absolutos.
fonte