Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Problema con transition en img, no reconoce after y after:hover

Estas en el tema de Problema con transition en img, no reconoce after y after:hover en el foro de CSS en Foros del Web. Hola gente Estoy intentando añadir un efecto shadow al pasar el cursor sobre una imagen que está en varias capas, el problema es que la ...
  #1 (permalink)  
Antiguo 13/04/2017, 11:14
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 8 meses
Puntos: 1
Problema con transition en img, no reconoce after y after:hover

Hola gente

Estoy intentando añadir un efecto shadow al pasar el cursor sobre una imagen que está en varias capas, el problema es que la imagen no reconoce las clases :after y after:hover. Les comparto las pruebas que hice:

#shad {
position: relative; }
#shad:after {
background: rgba(255, 255, 255, 0.1) none repeat scroll 0 0;
transition: all 0.8s ease-in-out 0s;
display: inline-block;
position: absolute;
right: 170px;
width: 300px;
height: 152px;
content: "";
top: 17px; }
#shad:hover::after {
right: -465px;
transition: all 0.8s ease-in-out 0s; }

Con está clase meto la id como sigue:

<div class="product-image-container">
<a id="shad" class="product_img_link" href="#" title="xxxx">
<img src="xxx.jpg" class="replace-2x img-responsive" height="135" width="180">
</a>
</div>

----------------------
Luego lo intenté de la siguiente manera:

.shad img {
position: relative; }
.shad:after img {
background: rgba(255, 255, 255, 0.1) none repeat scroll 0 0;
transition: all 0.8s ease-in-out 0s;
display: inline-block;
position: absolute;
right: 170px;
width: 300px;
height: 152px;
content: "";
top: 17px; }
.shad:hover::after img {
right: -465px;
transition: all 0.8s ease-in-out 0s; }

<div class="product-image-container">
<a class="product_img_link" href="#" title="xxxx">
<img src="xxx.jpg" class="replace-2x img-responsive shad" height="135" width="180">
</a>
</div>
----------------

Al hacer hover sobre la imagen no reconoce las clases de ninguna manera. Lo he intentado hacerlo sobre los divs y si funciona, el problema es que ello no me sirve porque coge la anchura de todo el div y si le pongo un "overflow:hidden" entonces otros span anteriores al div que necesito que se muestren fuera del overflow se recortan

¿Alguna sugerencia para que las clases :after y :hover::after me las reconozca la img?

saludos y gracias
  #2 (permalink)  
Antiguo 13/04/2017, 18:22
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Problema con transition en img, no reconoce after y after:hover

de que color es tu fondo?

He probado tu primer ejemplo y si funciona, el detalle esta en que el fondo es blanco y el objeto :after también es blanco por ende no es visible.
  #3 (permalink)  
Antiguo 13/04/2017, 19:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Problema con transition en img, no reconoce after y after:hover

hola perdona por la opción uno que aporté para tampoco me sirve ya que el shadow se me sale del width de la img y si añado un overflow:hidden a cualquiera de los divs anteriores tampoco consigo mucho.

Menciono el codigo completo:
Código:
<li class="ajax_block_product col-xs-12 col-sm-6 col-md-4 first-item-of-tablet-line">
  <div class="clase_con_imagen_de_fondo" itemscope="" itemtype="https://schema.org/Product">			
    <div class="left-block">
      <div class="product-image-container">
      <a class="product_img_link" href="#" title="xxxx">
      <img src="xxx.jpg" class="shad" height="135" width="180">
      </a>
    </div>
  </div>
</li>

El color de fondo es un imagen cubica blanca sombreada, esta añadida en el css del primer div que menciono en el quote

¿Saben que propiedad añadir al img para que me lea la class?
  #4 (permalink)  
Antiguo 14/04/2017, 09:09
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Problema con transition en img, no reconoce after y after:hover

Hasta donde se la etiqueta IMG, no tiene soporte para los pseudo elementos before y after

Por lo cual no puedes darle esas propiedades, en todo caso has de añadir otro div que la contenga y si le puedas dar el overflow que necesitas.
  #5 (permalink)  
Antiguo 14/04/2017, 17:57
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 8 meses
Puntos: 1826
Respuesta: Problema con transition en img, no reconoce after y after:hover

Yo la realidad es de que no he probado tu código, solo quiero hacer notar la lógica.

<div class="product-image-container">
- <a>
- <img>
- </a>
</div>

El codigo acaba siendo bastante simple:

Código CSS:
Ver original
  1. .product-image-container > a > img {
  2.     box-shadow: 0px 0px 0px #888888;
  3.     transition: all .3s ease-in-out;}
  4.  
  5. .product-image-container > a > img:hover {
  6.     box-shadow: 10px 10px 5px #888888;
  7.     transition: all .3s ease-in-out;}

Repito el código para la transición de ida y vuelta.
  #6 (permalink)  
Antiguo 15/04/2017, 15:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Problema con transition en img, no reconoce after y after:hover

Cita:
Iniciado por Rafael Ver Mensaje
Yo la realidad es de que no he probado tu código, solo quiero hacer notar la lógica.

<div class="product-image-container">
- <a>
- <img>
- </a>
</div>

El codigo acaba siendo bastante simple:

Código CSS:
Ver original
  1. .product-image-container > a > img {
  2.     box-shadow: 0px 0px 0px #888888;
  3.     transition: all .3s ease-in-out;}
  4.  
  5. .product-image-container > a > img:hover {
  6.     box-shadow: 10px 10px 5px #888888;
  7.     transition: all .3s ease-in-out;}

Repito el código para la transición de ida y vuelta.
HOla buenas

Creo que como dice ArturoGallegos el problema está en que el after y before no funcionará nunca en un img. Añadí a tu codigo los siguiente pero no funcionó tampoco.
Código CSS:
Ver original
  1. .product-image-container > a > img {
  2.     position: relative; }
  3. .product-image-container > a:after > img {
  4.     background: rgba(255, 255, 255, 0.2) none repeat scroll 0 0;
  5.   transition: all 0.8s ease-in-out 0s;
  6.   display: inline-block;
  7.   position: absolute;
  8.   right: -113px;
  9.   width: 200px;
  10.   height: 352px;
  11.   content: "";
  12.   top: -107px;}
  13.  
  14. .product-image-container > a:hover::after > img {
  15.       transition: all 0.8s ease-in-out 0s;
  16.   right: -140px;
  17.   width: 0;}

Y si no se añade el before o after tengo mis dudas de que pueda funcionar la transición que va de izquierda a derecha en la img con la transparencia rgba(255, 255, 255, 0.2), el box shadow no es el efecto deseado.

Para que podais entender lo que intentó es el ejemplo del boton ubicado arriba a la derecha que tiene el efecto de izquierda a derecha, la diferencia a ese ejemplo es que yo lo deseo aplicar a una etiqueta img con un opacity a 0.2
https://tympanus.net/Development/CreativeButtons/

saludos
  #7 (permalink)  
Antiguo 15/04/2017, 16:45
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Problema con transition en img, no reconoce after y after:hover

Hola rafael

siguiendo la lógica de tu ejemplo, he intentado hacerlo sin after ni before y usando en su lugar el hover, casí he conseguido el efecto deseado, apreciaciones:

PROS
Toma la anchura deseada de solo la anchura de la img
CONTRA
Solo consigo ver el efecto por fuera de la img gracias al padding de 20px, el efecto deseado funciona pero por detras de la img y si le aplico un z-index superior no consigo que el efecto se sobreponga sobre la imagen absolutamente

Código CSS:
Ver original
  1. .product-image-container > a > img {
  2.   padding:20px;
  3.   display: block;
  4.   background-image: linear-gradient(to left,
  5.                                     transparent,
  6.                                     transparent 50%,
  7.                                     #00c6ff 50%,
  8.                                     #00c6ff);
  9.   background-position: 100% 0;
  10.   background-size: 200% 100%;
  11.   transition: all .25s ease-in; }
  12.  
  13. .product-image-container > a > img:hover {
  14.   background-position: 0 0; }

¿Alguna sugerencia de codigo para que el efecto se vea por encima de la imagen?


NOTA: tengo en el css otras capas que quizas podrían interferir en el css, las expongo a continuación:
Código CSS:
Ver original
  1. ul.product_list .product-image-container {
  2.   text-align: center; }
  3.   ul.product_list .product-image-container img {
  4.     position: relative;
  5.     margin: 0 auto;
  6.     top: 21px; }

saludos
  #8 (permalink)  
Antiguo 15/04/2017, 22:43
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Problema con transition en img, no reconoce after y after:hover

Quizas lo que buscas es algo como esto

[JSFIDDLE="https://jsfiddle.net/arturogallegos/02cah7tx/"][/JSFIDDLE]
  #9 (permalink)  
Antiguo 16/04/2017, 11:09
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 8 meses
Puntos: 1826
Respuesta: Problema con transition en img, no reconoce after y after:hover

@ArturoGallegos, ¿Hay alguna forma de compilar el sass directamente en el JsFiddle?
  #10 (permalink)  
Antiguo 16/04/2017, 14:34
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 8 meses
Puntos: 1826
Respuesta: Problema con transition en img, no reconoce after y after:hover

Por otro lado, justamente yo estoy trabajando en algo similar.

Mi lógica es la siguiente:

Código HTML:
Ver original
  1. <div class="product-image-container">
  2.     <img><a>Texto encima de la imagen</a>
  3. </div>

Por una razón. Quiero tener la posibilidad de que aparezca un texto explicativo de la sección.

La lógica del css:

1) El div me define el ancho de mi caja.
2) La imagen va del 100% del ancho del contenedor y define el alto proporcionalmente.
3) El <a> crecerá al alto definido por la imagen, y el ancho definido por la caja.

Código CSS:
Ver original
  1. .product-image-container {
  2. width: 200px;
  3. position: relative;}
  4. .product-image-container img {width: 100%;}
  5.  
  6. .product-image-container {width: 100%;
  7. height: 100%;
  8. position: absolute:
  9. top: 0;}

Y el efecto de sombra etc, se lo doy a toda la caja

Código CSS:
Ver original
  1. .product-image-container {box-shadow: 5px 5px 5px #000;}

Esto me da independencia a hacer efectos al link encima o a toda la caja.
  #11 (permalink)  
Antiguo 16/04/2017, 14:59
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Problema con transition en img, no reconoce after y after:hover

Así es Rafael, en las opciones de CSS le das click y puedes seleccionar como lenguaje SCSS que vendría siendo SASS

y con relación a lo que mencionas con texto yo lo realizo así.
https://jsfiddle.net/arturogallegos/02cah7tx/1/
  #12 (permalink)  
Antiguo 16/04/2017, 21:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Problema con transition en img, no reconoce after y after:hover

Excelentes aportes ArturoGallegos, he probado ambas opciones y funcionan a la perfección después de quitarles el position relative en mi caso,

Saludos y gracias

Etiquetas: cursor, display, hover, img, reconoce
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:30.