Cómo superponer imágenes

Resuelto Robin Barnes asked hace 16 años • 10 respuestas

Quiero superponer una imagen con otra usando CSS. Un ejemplo de esto es que la primera imagen (el fondo, si lo desea) será un enlace en miniatura de un producto, y el enlace abrirá una caja de luz/ventana emergente que mostrará una versión más grande de la imagen.

Además de esta imagen vinculada, me gustaría ver una imagen de una lupa para mostrarle a la gente que se puede hacer clic en la imagen para ampliarla (aparentemente esto no es obvio sin la lupa).

Robin Barnes avatar Jan 01 '09 00:01 Robin Barnes
Aceptado

Acabo de terminar de hacer exactamente esto en un proyecto. El lado HTML se parecía un poco a esto:

<a href="[fullsize]" class="gallerypic" title="">
  <img src="[thumbnail pic]" height="90" width="140" alt="[Gallery Photo]" class="pic" />
  <span class="zoom-icon">
      <img src="/images/misc/zoom.gif" width="32" height="32" alt="Zoom">
  </span>
</a>

Luego usando CSS:

a.gallerypic{
  width:140px;
  text-decoration:none;
  position:relative;
  display:block;
  border:1px solid #666;
  padding:3px;
  margin-right:5px;
  float:left;
}

a.gallerypic span.zoom-icon{
  visibility:hidden;
  position:absolute;
  left:40%;
  top:35%;
  filter:alpha(opacity=50);
  -moz-opacity:0.5;
  -khtml-opacity: 0.5;
  opacity: 0.5;
}

a.gallerypic:hover span.zoom-icon{
  visibility:visible;
}

Dejé gran parte de la muestra en el CSS para que puedas ver cómo decidí hacer el estilo. Tenga en cuenta que bajé la opacidad para que pudiera ver a través de la lupa.

EDITAR: Para aclarar su ejemplo, puede ignorar visibility:hidden;y finalizar la :hoverejecución si lo desea, así fue como lo hice.

Tim Knight avatar Dec 31 '2008 17:12 Tim Knight

Una técnica, sugerida por este artículo , sería hacer esto:

<img style="background:url(thumbnail1.jpg)" src="magnifying_glass.png" />
Nathan Long avatar Dec 31 '2008 17:12 Nathan Long

Aquí se muestra una forma sencilla de hacerlo solo con CSS sin modificar el contenido con etiquetas adicionales (con código y ejemplo): http://soukie.net/2009/08/20/typography-and-css/#example

Esto funciona, siempre y cuando el elemento principal no utilice posicionamiento estático. Simplemente configurarlo en posición relativa es suficiente. Además, IE <8 no admite el selector o contenido :before .

Editar: el enlace anterior ya no funciona, pero es visible en WayBack Machine: https://web.archive.org/web/20120213121217/https://soukie.net/2009/08/20/typography-and-css/

enki avatar Jun 23 '2010 00:06 enki

Así es como lo hice recientemente. No es perfecto semánticamente, pero hace el trabajo.

<div class="container" style="position: relative">
<img style="z-index: 32; left: 8px; position: relative;" alt="bottom image" src="images/bottom-image.jpg">
<div style="z-index: 100; left: 72px; position: absolute; top: 39px">
<img alt="top image" src="images/top-image.jpg"></div></div>
personaelit avatar Dec 31 '2008 17:12 personaelit

Si solo desea que la lupa esté suspendida, puede usar

a:hover img { cursor: url(glass.cur); }

http://www.javascriptkit.com/dhtmltutors/csscursors.shtml

Si lo desea allí de forma permanente, probablemente debería incluirlo en la miniatura original o agregarlo usando JavaScript en lugar de agregarlo al HTML (esto es puramente estilo y no debería estar en el contenido).

Déjame saber si quieres ayuda en el lado de JavaScript.

Steve Perks avatar Dec 31 '2008 17:12 Steve Perks