Página principal » Codificación » Cree un efecto de revelación de imagen solo para CSS con bordes transparentes

    Cree un efecto de revelación de imagen solo para CSS con bordes transparentes

    UNA Efecto revelador de imagen solo CSS Se puede resolver de diferentes maneras. En realidad, es bastante fácil codificar un diseño en el que la imagen se destaca de (es desbordado por) su fondo sólido -tu solo colocar una imagen sobre un elemento más pequeño con un fondo sólido.

    Puedes obtener el mismo resultado si usas fronteras transparentes, donde guardas el tamaño del elemento de fondo del mismo como la del primer plano y añadir bordes transparentes para crear un espacio vacío para el primer plano para desbordar en.

    Existen Algunas ventajas en el uso de este último método.. Ya que son los bordes transparentes los que proporcionan el área para que el primer plano se desborde, podemos controlar la dirección del desbordamiento entre los bordes izquierdo, derecho, superior e inferior. Además, tiene el mismo tamaño para el primer plano y el fondo Facilita el movimiento simultáneo de ambos elementos. a través de la página.

    En pocas palabras, vamos a ver cómo crear un efecto revelador de imagen solo CSS usando un fondo sólido más pequeño con un Imagen de primer plano que tiene bordes transparentes.. Puedes revisar el demo final abajo.

    1. Crea el código inicial.

    HTML-sabio, solo uno

    es requerido:

     

    En el CSS, usamos dos variables CSS, --bgc y --oscuro Para el color de fondo y el dimensiones del .foo contenedor, respectivamente. En el ejemplo, utilicé el mismo valor para el ancho y la altura para obtener una caja de forma cuadrada, crear variables separadas Para la altura y el ancho si quieres una rectangular..

    También agregamos el posición: relativo gobernar a .foo, de modo que sus pseudo-elementos, que vamos a utilizar para revelando la imagen, puede ser absolutamente posicionado (ver abajo), y por lo tanto apilados unos sobre otros.

     .foo --bgc: # FFCC03; --dim: 300px; ancho: var (- dim); altura: var (- dim); color de fondo: var (- bgc); posición: relativa;  

    Nosotros añadir un vacío contenido propiedad a ambos pseudo-elementos, .foo :: antes y .foo :: después, para hacerlos correctamente prestados.

     .foo :: before, .foo :: after content: "; position: absolute; izquierda: 0; top: 0; 

    los .foo Elemento, sus dos pseudo-elementos., .foo :: antes, .foo :: después, y ellos :flotar pseudo-clases obtener una transición propiedad esa voluntad añadir una transición de facilidad A ellos por 500 milisegundos (medio segundo)..

     .foo, .foo: hover, .foo :: before, .foo :: after, .foo: hover :: before, .foo: hover :: after transition: transform 500ms eas-in;  

    2. Añadir la imagen.

    Añadimos la imagen a la .foo :: antes pseudo-elemento como imagen de fondo, y tamaño para cubrir todo el pseudo-elemento con el anchura y altura propiedades Nosotros apílelo justo debajo de la .foo elemento utilizando la índice z: -1 regla.

     .foo :: before width: 100%; altura: 100%; fondo: url (camel.png) centro / cubierta; índice z: -1;  

    los centrar palabra clave centra la imagen, mientras que la cubrir palabra clave escala la imagen a cubrir todo el elemento manteniendo su relación de aspecto.

    Sobre el captura de pantalla abajo Puedes ver lo que tenemos hasta ahora (índice z se elimina de .foo :: antes para que se pueda ver):

    3. Agregue el fondo deslizable

    Para agregar el Fondo más pequeño (deslizable) detrás de la imagen, Usaremos el otro pseudo-elemento., .foo :: después.

    Creamos otra variable CSS, --segundo, Para el ancho del borde. Damos tres fronteras transparentes al ::después pseudo-elemento arriba, derecha y abajo.

     .foo :: después de --b: 20px; ancho: calc (100% - var (- b)); altura: calc (100% - calc (var (- b) * 2)); borde: var (- b) sólido transparente; borde izquierdo: ninguno; cuadro-sombra: recuadro 0 var (- dim) 0 var (- bgc); filtro: brillo (.8); índice z: -2;  

    los anchura se calcula como calc (100% - var - b) que vuelve el ancho total de .foo menos el ancho total de sus bordes horizontales (Sólo borde derecho, ya que no hay borde izquierdo).

    los altura se calcula como calc (100% - calc (var (- b) * 2)) que vuelve la altura total de .foo menos el ancho total de sus bordes verticales (bordes superior e inferior).

    Con el sombra de la caja propiedad, nosotros también añadir una sombra de inserción horizontal del mismo tamaño que .foo (cual es var (- dim)).

    Un filtro CSS de brillo (.8) oscurece el color de fondo un poco, y finalmente, el índice z: -2 regla coloca el ::después pseudo-elemento debajo ::antes de que contiene la imagen.

    Aquí esta la captura de pantalla de la demo rendido hasta ahora (con índice z retirado de ambos pseudo-elementos para que puedan verse):

    4. Agrega la transformación

    Nosotros añade el transformar propiedad a los dos pseudo-elementos, por lo que cuando el usuario se desplaza sobre .foo, ambos pseudo-elementos son movido horizontalmente.

    Como nosotros ya agregado el transición propiedad a todos los elementos Al final del Paso 1, el movimiento de la imagen y su fondo son ambos animados.

     .foo: hover :: before, .foo: hover :: after transform: translateX (100%);  

    Abajo, puedes ver el demo final.

    Bonus: margen opcional

    Si usted muestra .foo junto a otros elementos en una página y quiere que estos otros elementos alejarse cuando la imagen y su fondo se deslizan, entonces añadir un margen derecho del mismo ancho que el de .foo al .foo: hover elemento.

     .foo: hover margen-derecha: var (- dim);