TransWikia.com

¿Cómo ocultar información de div?. Efecto desconocido

Stack Overflow en español Asked on November 27, 2021

.zona-descuentos div{
    display: inline-block;
    padding: 1rem;
    width: 220px;
    background: white;
    margin-bottom: 3rem;
    transition: 0.5s;
}
#info{
    display: none;
}
.capsula:hover #info{
    display: block;
}
.zona-descuentos img{
    width: 230px;
    height: 250px;
}
<div class="zona-descuentos">
            <div class="capsula">
            <a href=""><img src="../imagenes/descuentos/ukelele-descuento.jpg" alt="">
            <div id="info"><h4>385.344</h4><h6>30%OFF</h6><h5>Ukele soprano</h5></a></div>
            </div>
            <div class="capsula">
            <a href=""><img src="../imagenes/descuentos/sintetizador-descuento.jpg" alt=""></a>
            </div>
            <div class="capsula">
            <a href=""><img src="../imagenes/descuentos/guitarrae-descuento.jpg" alt=""></a>
            </div>
            <div class="capsula">
            <a href=""><img src="../imagenes/descuentos/trompeta-descuento.jpg" alt=""></a>
            </div>
        </div>

Estoy intentando crear una lista de productos y me gustaría que dieran la información de cada uno cuando paso el mause por arriba de él, como aparece en las dos imágenes. Intenté poniendo display none a la información y haciendo que aparezca cuando paso el mause por la imagen pero no sé por qué el resto de imágenes también se mueven. Si me pueden ayudar con un link donde expliquen este efecto se los agradecería mucho, he buscado pero no encuentro nada sobre esto.
https://ibb.co/DWsYCk9
https://ibb.co/LxWtbkx

2 Answers

concentrate en el alto de la capsula , cuando haces un hover sonbre esta, cambia el alto en este caso te lo puse de 300px a 350px, como ejemplo pero vos veras las alturas , y al mismo tiempo haces aparecer la descripcion como bien hiciste con #info, concentrate en las cards (capsulas) no lo hagas a nivel contenedor , el contenedor que tengas sus dimensiones fijas o dinamicas con el display (inline-block, flex...) que vos elijas

.capsula  {
width: 300px;
height: 200px; /* declara el alto fijo que se modifica con el hover */
border: 1px solid black;/* para ternerlo como guia */
overflow: hidden; /* para que quede mas lindo el efecto cuando aparece el 
parrafo descripcion */
transition: height .9s; /* con height estas diciendo que solo esa propiedad 
tengas esos segundos de accion en el cambio */
}
#info{
display: none;
}
.capsula:hover #info{
display: block;
}
.capsula:hover {
 height: 350px;
 cursor: pointer;/* cursor */
 }
.capsula img{
width: 100%;     
}

Answered by facu aquino on November 27, 2021

Jugando con display: none y display: block irremediablemente cuando el elemento .info aparezca va a empezar a ocupar espacio, por lo que va a empujar al contenido que haya debajo de él para poder mostrarse.

Si quieres evitar esto puedes jugar con las propiedades visibility: hidden y visibility: visible que lo que hace es mantener el espacio que ocuparía el elemento de estar mostrándose.

.zona-descuentos div{
  display: inline-block;
  padding: 1rem;
  width: 220px;
  background: white;
  margin-bottom: 3rem;
  transition: 0.5s;
}

.info {
  visibility: hidden;
}

.capsula:hover .info{
  visibility: visible;
}

.zona-descuentos img {
  width: 230px;
  height: 250px;
}
<div class="zona-descuentos">
  <div class="capsula">
    <a href="">
      <img src="https://static.affinity-petcare.com/advance/cdn/farfuture/6uTxpGQzOTX3xDO_nq8ipqZSCjqs6cxDE7_Ta3YPrSk/drupal-cache:qdip0x/sites/default/files/field/image/diarrea_en_gatitos_1.jpg" alt="">
      <div class="info"><h4>385.344</h4><h6>30%OFF</h6><h5>Ukele soprano</h5></div>
    </a>
  </div>
  
  <div class="capsula">
    <a href="">
      <img src="https://static.affinity-petcare.com/advance/cdn/farfuture/6uTxpGQzOTX3xDO_nq8ipqZSCjqs6cxDE7_Ta3YPrSk/drupal-cache:qdip0x/sites/default/files/field/image/diarrea_en_gatitos_1.jpg" alt="">
      <div class="info"><h4>385.344</h4><h6>30%OFF</h6><h5>Ukele soprano</h5></div>
    </a>
  </div>
  
  <div class="capsula">
    <a href="">
      <img src="https://static.affinity-petcare.com/advance/cdn/farfuture/6uTxpGQzOTX3xDO_nq8ipqZSCjqs6cxDE7_Ta3YPrSk/drupal-cache:qdip0x/sites/default/files/field/image/diarrea_en_gatitos_1.jpg" alt="">
      <div class="info"><h4>385.344</h4><h6>30%OFF</h6><h5>Ukele soprano</h5></div>
    </a>
  </div>
  
  <div class="capsula">
    <a href="">
      <img src="https://static.affinity-petcare.com/advance/cdn/farfuture/6uTxpGQzOTX3xDO_nq8ipqZSCjqs6cxDE7_Ta3YPrSk/drupal-cache:qdip0x/sites/default/files/field/image/diarrea_en_gatitos_1.jpg" alt="">
      <div class="info"><h4>385.344</h4><h6>30%OFF</h6><h5>Ukele soprano</h5></div>
    </a>
  </div>
</div>

Referencia: visibility

También transforme el elemento info es una clase en vez de en un id para poder usarlo en más de una capsula.

Answered by phpMyGuel on November 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP