Veremos cómo aplicar la propiedad webkit-box-reflect para crear reflejos, además, su sintaxis ofrece una cantidad importante de valores los cuales podemos establecer a gusto para cambiar aspectos que van desde la posición, desplazamiento hasta la posibilidad de aplicar máscaras a través de degradados CSS y así crear reflejos.
Crear reflejos en CSS siempre ha sido un efecto llamativo, pero normalmente implica duplicar elementos, aplicar transformaciones, jugar con opacidades y ajustar gradientes manualmente. En ese contexto, -webkit-box-reflect aparece como una propiedad curiosa que simplifica mucho el proceso… aunque con importantes matices.
En esta guía te explico qué es box-reflect en CSS, cómo funciona realmente -webkit-box-reflect, qué valores admite, cómo crear reflejos con degradados y, sobre todo, cuándo tiene sentido usarla y cuándo no, algo que no siempre se aclara en la documentación oficial.
Antes vimos cómo usar los bordes en CSS.
Qué es -webkit-box-reflect y para qué sirve en CSS
La propiedad -webkit-box-reflect permite crear un reflejo visual de un elemento en una dirección concreta: arriba, abajo, izquierda o derecha. Actúa como si el navegador duplicara el contenido del elemento y lo reflejara como un espejo.
A diferencia de otros efectos CSS, aquí no estamos transformando manualmente el elemento, sino aplicando una propiedad que genera el reflejo automáticamente, lo cual ahorra bastante trabajo cuando solo se busca un efecto visual rápido.
En mi caso, la he usado principalmente con imágenes y elementos decorativos, donde el reflejo aporta impacto visual sin necesidad de una estructura compleja.
Soporte de navegadores y por qué no es una propiedad estándar
Cómo puedes darte cuenta con el nombre de la propiedad en cuestión establecida en esta entrada (webkit-box-reflect) el soporte es solo para los navegadores webkit lo que quiere decir que solo funcionará en los navegadores que emplean la plataforma webkit como lo son: Chrome, Opera y Safari.
Esto último nos dice que no es una propiedad en lo absoluto soportada por una gran cantidad de navegadores y por lo tanto no es muy recomendable emplearlo para aplicaciones finales pero sí con fines educativos o para experimentar un poco.
Antes de usar box-reflect en CSS, hay que tener claro un punto clave: no es una propiedad estándar.
Navegadores compatibles con webkit-box-reflect
Funciona únicamente en navegadores basados en WebKit o Blink, como:
- Chrome
- Safari
- Opera
- Edge (versiones basadas en Chromium)
No funciona en Firefox ni en navegadores que no soporten el prefijo -webkit-.
Cuándo tiene sentido usar box-reflect y cuándo no
Por experiencia, no es recomendable usar -webkit-box-reflect en aplicaciones finales o interfaces críticas, ya que el soporte no es universal y puede cambiar o desaparecer.
Donde sí tiene sentido:
- Experimentos visuales
- Demos
- Proyectos educativos
- Landings muy controladas
- Pruebas de concepto
Cuando lo probé en layouts reales, me di cuenta de que si no alineas bien el elemento y su reflejo, el flujo del documento puede romperse fácilmente, algo que no suele mencionarse en las guías rápidas.
La sintaxis de la propiedad webkit-box-reflect en detalle
La sintaxis es sencilla, pero muy flexible:
-webkit-box-reflect: <dirección> <desplazamiento> <máscara>;Cada parte es opcional (excepto la dirección), y se puede combinar según el efecto que busques.
Como veremos a continuación podemos colocar el reflejo en cualquier de los lados que queramos, incluido abajo, como nos interesa para nuestro ejemplo:
Por ello empleamos la siguiente regla CSS:
-webkit-box-reflect: below;
Valores de dirección: above, below, left y right
Estos valores indican dónde aparece el reflejo:
-webkit-box-reflect: below; -webkit-box-reflect: above; -webkit-box-reflect: left; -webkit-box-reflect: right;
En la práctica, el reflejo inferior (below) suele ser el más utilizado, especialmente con imágenes, porque imita mejor un reflejo realista.
Aunque para posicionarnos en las distintas posiciones o direcciones tenemos distintos valores que podemos establecer:
-webkit-box-reflect: left para el reflejo a la izquierda
-webkit-box-reflect: right para el reflejo a la derecha
-webkit-box-reflect: above para el reflejo en la parte superior
Estableciendo desplazamientos con la propiedad webkit-box-reflect
Si queremos colocar una separación entre la imagen y el reflejo empleamos la segunda propiedad; por ejemplo, para separarlo unos 80px para cada uno de los ejemplos que vimos anteriormente:
Puedes usar cualquier unidad válida en CSS: px, em, rem, etc.
-webkit-box-reflect: above 8px
-webkit-box-reflect: right 8px
-webkit-box-reflect: left 8px
-webkit-box-reflect: below 8px
Aplicando máscaras en la propiedad webkit-box-reflect para obtener reflejos:
Como se indicó en un inicio, se pueden aplicar máscaras o filtros para obtener unos interesantes efectos; en nuestro caso nos interesa obtener una especie de reflejo difuminado de la imagen:
-webkit-box-reflect: below 8px linear-gradient(transparent, white);
Que obviamente se puede aplicar a las distintas posiciones que vimos anteriormente; en general la propiedad webkit-box-reflect es bastante útil al evitar que nosotros realicemos todo este trabajo a mano; el único problema (aparte de que solo funciona en los navegadores con webkit) es que hay que alinear tanto la imagen como el reflejo para que no se rompa con el flujo básico de nuestro documento como verán si estudias un poco el CSS de los ejemplo anteriores.
Uso de imágenes y gradientes como máscara
Aquí es donde -webkit-box-reflect se vuelve realmente interesante. Puedes aplicar una máscara, normalmente con linear-gradient, para crear un efecto de difuminado:
-webkit-box-reflect: below 8px linear-gradient(transparent, white);Este gradiente actúa como una máscara:
- Las zonas transparentes ocultan el reflejo
- Las zonas opacas lo mantienen visible
Cuando empecé a experimentar con esto, el resultado cambió por completo: el reflejo deja de verse “plano” y pasa a parecer mucho más natural.
Crear reflejos en CSS paso a paso con ejemplos
Reflejo básico de una imagen
El uso más simple posible:
img {
-webkit-box-reflect: below;
}Esto crea un reflejo inmediato, sin separación ni degradado.
Reflejo con separación personalizada
Añadiendo un pequeño desplazamiento:
img {
-webkit-box-reflect: below 10px;
}Este ajuste es clave para que el reflejo no interfiera visualmente con el elemento original.
Reflejo con efecto difuminado usando linear-gradient
Para un acabado más realista:
img {
-webkit-box-reflect: below 10px
linear-gradient(transparent, rgba(255, 255, 255, 0.4));
}En este punto es donde realmente se aprecia la potencia de la propiedad. En mis pruebas, combinar distancia + gradiente es lo que marca la diferencia entre un efecto amateur y uno convincente.
Problemas comunes al usar webkit-box-reflect
Errores de alineación y flujo del documento
Uno de los principales inconvenientes es que el reflejo no siempre respeta el flujo natural del layout. Si el elemento no está bien contenido o alineado, el reflejo puede desbordar su contenedor.
Esto me obligó, en más de un caso, a ajustar márgenes y contenedores solo para que el reflejo no rompiera el diseño.
Limitaciones visuales y de layout
- No se puede animar de forma fluida
- No hay control independiente del reflejo
- El soporte depende del motor del navegador
Por eso, aunque la propiedad es muy cómoda, no sustituye a soluciones más robustas cuando el proyecto lo exige.
Alternativas a webkit-box-reflect en CSS moderno
Si necesitas compatibilidad total, la alternativa pasa por:
- Duplicar el elemento
- Usar transform: scaleY(-1) o rotateX(180deg)
- Aplicar gradientes con mask-image u opacidades
Es más trabajo, pero ofrece control absoluto y soporte completo.
FAQs sobre box-reflect CSS
- ¿Qué es -webkit-box-reflect?
- Una propiedad CSS no estándar que crea reflejos de un elemento en una dirección específica.
- ¿Funciona box-reflect en Firefox?
- No, solo funciona en navegadores basados en WebKit/Blink.
- ¿Se puede usar sin el prefijo -webkit-?
- No, actualmente solo funciona con el prefijo.
- ¿Es recomendable usarlo en producción?
- No en proyectos críticos; sí en contextos experimentales o educativos.
Conclusión: cuándo usar box-reflect CSS y recomendaciones finales
-webkit-box-reflect es una propiedad potente, simple y muy visual, ideal para experimentar y aprender. Permite crear reflejos en CSS con apenas una línea de código, algo difícil de igualar con técnicas tradicionales.
Eso sí, hay que usarla con criterio. Por su naturaleza no estándar y su soporte limitado, no es la mejor opción para producción, pero sí una herramienta excelente para demos, pruebas y efectos visuales rápidos.
Si tu objetivo es aprender, experimentar o sorprender visualmente, merece totalmente la pena probarla.
Acepto recibir anuncios de interes sobre este Blog.
Se explica cómo crear un reflejo de una imagen con la propiedad webkit-box-reflect, además de su sintaxis básica que permite cambiar la posición, desplazamiento y hasta la posibilidad de aplicar máscaras para crear reflejos