+-

Efectos de Distorsión y Desenfoque en CSS con Control de Pseudo-elementos

Aportación por BarbaraEberle, Jul 24, 2024

Tema anterior - Siguiente tema

BarbaraEberle

1. Introducción

En este tutorial, aprenderás cómo agregar efectos visuales avanzados como distorsión y desenfoque a elementos HTML utilizando CSS. También aprenderás a manejar la visibilidad de pseudo-elementos durante estos efectos.

2. Efecto de Distorsión

El efecto de distorsión puede lograrse utilizando la propiedad `transform` junto con animaciones CSS. Aquí está el código base para una animación de distorsión:

css
@keyframes distortion {
  0% {
    transform: scale(1) skew(0deg, 0deg);
  }
  25% {
    transform: scale(1.05) skew(1deg, -1deg);
  }
  50% {
    transform: scale(1) skew(-1deg, 1deg);
  }
  75% {
    transform: scale(1.05) skew(1deg, 0deg);
  }
  100% {
    transform: scale(1) skew(0deg, 0deg);
  }
}

Esta animación `distortion` aplica una serie de transformaciones de escala y sesgo (`skew`) en un ciclo de 0.3 segundos, lo que crea un efecto de distorsión en el elemento al que se aplica.

3. Aplicación del Efecto de Distorsión en Enlaces

Para aplicar esta animación a un elemento, como un enlace, puedes hacerlo en el estado `hover` del enlace:

css
.producttags a:hover {
    color: black;
    background: #fce4cc;
    text-decoration: none;
    animation: distortion 0.3s ease-in-out; /* Aplica la animación de distorsión */
}

4. Controlando la Visibilidad de Pseudo-elementos (`::before` y `::after`)

Si quieres que los pseudo-elementos desaparezcan durante el efecto de distorsión, puedes usar la propiedad `opacity` o `visibility` en el estado `hover`. Aquí está el código:

css
.producttags a:before,
.producttags a:after {
    content: "";
    position: absolute;
    /* Estilos adicionales */
    transition: opacity 0.3s ease-in-out; /* Transición para suavizar la desaparición */
}

.producttags a:hover:before,
.producttags a:hover:after {
    opacity: 0; /* O utiliza visibility: hidden; */
}

5. Efecto de Desenfoque

Para aplicar un efecto de desenfoque, puedes usar la propiedad `backdrop-filter`. Esta propiedad funciona bien con pseudo-elementos para crear un desenfoque detrás de un elemento.

css
.producttags a:hover::after {
    backdrop-filter: blur(10px); /* Aplica desenfoque */
}

6. Ejemplo Completo

Aquí está un ejemplo completo que integra todos los conceptos:

css
@keyframes distortion {
  0% {
    transform: scale(1) skew(0deg, 0deg);
  }
  25% {
    transform: scale(1.05) skew(1deg, -1deg);
  }
  50% {
    transform: scale(1) skew(-1deg, 1deg);
  }
  75% {
    transform: scale(1.05) skew(1deg, 0deg);
  }
  100% {
    transform: scale(1) skew(0deg, 0deg);
  }
}

.producttags {
    list-style: none;
    position: relative;
    clear: both;
    display: block;
    padding-bottom: 20px;
    margin-bottom: 20px;
}

.producttags li, .producttags a {
    float: left;
    height: 24px;
    line-height: 24px;
    position: relative;
    font-size: 11px;
}

.producttags a {
    margin-left: 20px;
    padding: 0 10px 0 12px;
    background: black;
    color: white;
    text-decoration: none;
    border-bottom-right-radius: 4px;
    border-top-right-radius: 4px;
    position: relative;
    overflow: hidden;
}

.producttags a:visited {
    color: #fce4cc;
}

.producttags a:before,
.producttags a:after {
    content: "";
    position: absolute;
    top: 0;
    left: -12px;
    width: 0;
    height: 0;
    border-color: transparent black transparent transparent;
    border-style: solid;
    border-width: 12px 12px 12px 0;
    transition: opacity 0.3s ease-in-out; /* Transición para suavizar la desaparición */
}

.producttags a:after {
    background: #fff;
    border-radius: 2px;
    box-shadow: -1px -1px 2px #004977;
}

.producttags a:hover {
    color: black;
    background: #fce4cc;
    text-decoration: none;
    animation: distortion 0.3s ease-in-out; /* Aplica la animación de distorsión */
}

.producttags a:hover:before,
.producttags a:hover:after {
    opacity: 0; /* Pseudo-elementos se hacen invisibles durante el efecto de distorsión */
}

7. Conclusión

Con estos pasos, has aprendido a aplicar efectos visuales avanzados como distorsión y desenfoque en tus elementos HTML utilizando CSS. Estos efectos pueden hacer que tus interfaces sean más interactivas y visualmente atractivas. Recuerda siempre probar y ajustar los efectos para asegurarte de que funcionen correctamente en todos los navegadores y dispositivos.

Aportación rápida

Nota: este mensaje no se mostrará hasta que sea aprobado por un moderador.

Nombre:
Correo electrónico:
Atajos: ALT+S para publicar/enviar o ALT+P para previsualizar

Open Access

Únete a nosotros en nuestro compromiso de promover el acceso abierto y la difusión del conocimiento. Tu apoyo financiero nos permite continuar con nuestros proyectos de Open Access. Además, como agradecimiento, recibirás una hermosa página web como regalo. ¡Juntos podemos hacer la diferencia en el mundo del conocimiento abierto!

Powered by EzPortal