- glass3d generator es una herramienta que permite previsualizar y copiar al instante CSS con textura de vidrio mientras cambias los valores de configuración
- Los ajustes clave están compuestos por blur, brightness, saturation de
backdrop-filter, además de la selección de color y textura - El color se maneja con HSL y valor alfa; un valor de ejemplo es
hsl(189 80% 10% / 0.2) - La textura puede elegirse entre rice paper, egg shell, ink jet, coarse y topology
- El CSS generado combina
.glass3d,::before,::aftery elz-indexde los elementos hijos para separar el filtro de fondo, la textura de ruido, la sombra interior y la capa de contenido
Valores que se pueden ajustar en glass3d generator
- Al cambiar los valores de configuración, el resultado se refleja de inmediato en la propia interfaz
- El CSS final puede copiarse para usarlo
- Los principales elementos de configuración son los siguientes
backdrop-filterblurbrightnesssaturationcolortexture
Estructura del CSS generado
- La clase
.glass3ddefine las variables CSS y la referencia de capas--filter-glass3d:blur(32px) brightness(0.85) saturate(2.5)--color-glass3d:hsl(189 80% 10% / 0.2)--noise-glass3d:transparenttextures.comdeegg-shell.png- Usa
position: relative,z-index: 4y varias etapas debox-shadow
.glass3d::beforeaplica el filtro de fondo y la textura- Usa
var(--filter-glass3d)en-webkit-backdrop-filterybackdrop-filter - En
background-colorybackground-imagese incluyen respectivamente la variable de color y la variable de ruido - Configura
background-size: 100pxybackground-repeat: repeat
- Usa
.glass3d::afteragrega sombra de resaltado interior- Usa varios valores de
inset box-shadow
- Usa varios valores de
.glass3d > *aplicaposition: relativeyz-index: 6para que el contenido se vea por encima
1 comentarios
Opiniones de Hacker News
Este enfoque tiene el problema de aplicar el desenfoque solo con los píxeles justo detrás de la superficie, y se muestra muy bien en https://www.joshwcomeau.com/css/backdrop-filter/#the-issue
Vale la pena leerlo junto con la discusión en https://news.ycombinator.com/item?id=42302907. Si el fondo se mueve por debajo, el problema de desenfocar solo los píxeles justo detrás es bastante importante; si el fondo es estático, normalmente no importa tanto
Funcionó bien en elementos con valores hardcodeados, pero todavía queda por resolver cómo hacerlo funcionar en una biblioteca completa de componentes donde el border-radius cambia según el branding del usuario y las container queries
Más bien, tiendo a pensar que el material predeterminado se parece más al papel
Para mí, la versión ajustada choca con las pistas de profundidad, así que se ve mucho más distractora y más equivocada
Se ve bastante bien, pero si falta la refracción del vidrio, desaparece esa fuerte sensación de separación de capas que considero el mayor aporte de Liquid Glass
Material tiene excelentes recursos para diseñadores que muestran en 3D lateral que una app debería estar compuesta por capas móviles coherentes. Pero cuando se combina todo en 2D, se vuelve muy difícil encontrar qué función está dónde. Es muy común que la gente no vea los botones de acción en las esquinas
El movimiento ayuda un poco a distinguir el chrome del contenido, pero hay muy pocos elementos que lo definan visualmente. Creo que la mayor ventaja de Liquid Glass es la distorsión en los bordes. Cuando el contenido se mueve, aparece un movimiento no lineal, y la visión humana lo detecta de inmediato
Las capturas estáticas no siempre se ven bien, pero en movimiento separa los elementos mucho mejor que cualquier cosa que haya visto hasta ahora. Aquí falta el elemento clave de refracción que aprovecha fuertemente la detección de movimiento humana
Antes vi otra excelente demo web, pero ahora es difícil encontrarla; en su lugar, esta demo tiene mal rendimiento en móviles y visualmente no es tan buena, pero muestra muy bien paso a paso lo complejo que es el trabajo. Implementar distorsión de bordes solo con filtros SVG es un camino bastante duro: https://atlaspuplabs.com/blog/liquid-glass-but-in-css#breaki...
También encontré una colección de intentos de Liquid Glass (CodePen Spark), y creo que el segundo enlace es un ejemplo bastante bien hecho con un SVG hardcodeado y muy específicamente predefinido: https://codepen.io/spark/453 https://codepen.io/lucasromerodb/pen/vEOWpYM
Como la gente ve vidrio real todos los días, tiene una intuición sobre qué se ve real y correcto. Por eso las imitaciones se ven claramente peores, y Apple puede mantener una imagen de producto que “se ve premium”
En el proyecto actual, el objetivo era crear un material que se sintiera pulido, funcionara de forma consistente entre navegadores y no usara 3D real. También es cierto que el efecto se nota mejor cuando se mueve sobre un fondo fijo. En el sitio demo de la biblioteca en la que estoy trabajando lo hago así, pero todavía no está listo
Sé que el vidrio real se comporta así, pero no quiero tener que prestarle atención. Se siente como si hubieran tomado solo la peor parte del skeuomorfismo y la hubieran duplicado, y lo digo incluso como alguien que prefería la etapa anterior a iOS 7
Es un efecto genial, pero a mí no me parece vidrio real
La diferencia más inmediata es que la luz no interactúa con el bisel. Esperaría que la luz volviera a entrar en el vidrio y también afectara la iluminación y el color. No alcanza con simplemente agregar desenfoque
Además, el vidrio puede tener sombras propias y patrones interesantes de cáusticas. Aquí se ve una sombra, pero se siente como una simple drop shadow, así que parece más una tarjeta plana que un objeto físico 3D que forma parte del nuevo flujo
En cualquier caso, no es fácil imitarlo solo con CSS, y un shader corriendo en la GPU parece más adecuado
divcomún? Si no se pueden aplicar efectos de GPU al HTML básico y hay que hacerlo sobre elementos custom como alguna combinación arbitraria de Canvas, quizá sea mejor rehacer por completo un nuevo motor de renderizado capaz de aplicar efectos de GPUCreo que HTML está muerto. Para transmitir texto bastan unas cuantas etiquetas, y casi todo lo demás se usa para convertir las páginas web en bombas de publicidad. Así que sería mejor empezar de nuevo con una etiqueta
<text>y una mejor integración con GPU, y dejar fuera el restoHice una versión en JavaScript que realmente refracta los elementos de la página: https://real-glass.vercel.app/
Estoy reuniendo cosas como estas: https://github.com/swyxio/spark-joy
Como otros recursos, hay un generador CSS gratuito basado en la especificación de diseño glassmorphism https://ui.glass/generator/, un encabezado fijo de vidrio esmerilado https://www.joshwcomeau.com/css/backdrop-filter/, glassy glassmorphism en codepen y in context
Está realmente muy bien hecho. Siempre me sorprende que la computación gráfica no sea “un truco raro”, sino más bien 5 trucos apilados en capas
Hacer que además sea compatible entre navegadores es un desafío adicional. Me da curiosidad si tienen una idea de qué parte consume más recursos. Pensándolo de forma simple, parecería ser
backdrop-filterTu intuición es correcta: la parte que más recursos consume es el desenfoque de
backdrop-filter. Cuanto mayor es el valor de blur, más píxeles vecinos hay que “consultar” antes de renderizarOtro elemento costoso es que hay que redibujar constantemente cuando haces scroll o cuando un fondo de video cambia el aspecto del vidrio
Parece usar una técnica similar a mi implementación de vidrio: https://news.ycombinator.com/item?id=42225481
En particular, se parece en el uso excesivo de
box-shadowUn pequeño problema: la sombra entre la parte superior y el área desplazable donde están los toggles/el código desaparece al hacer scroll hacia abajo. Probablemente debería estar oculta al principio y luego aparecer
Esos
box-shadow“sobresalientes” estaban diseñados para aplicarse dentro del elemento, no para proyectarse hacia abajo desde algún elemento, y en este caso me di cuenta de que hay que aplicar la sombra de la segunda formaEn mi teléfono, el desplazamiento del contenido es bastante lento. Me pregunto si hay algún otro efecto de scroll que lo haga lento a propósito, o si es un efecto secundario del efecto de vidrio
Puede que se me haya pasado, pero en móvil sería mucho más útil poder ocultar o contraer la caja
Ahora ocupa toda la pantalla, así que casi no se puede ver el efecto de atrás. Aun así me interesa y pienso volver a probarlo más tarde en una pantalla más grande, pero una opción para ocultar la caja lo haría mucho mejor
En la primera implementación puse un pequeño rectángulo de demostración encima de la UI del generador, pero incluso algo pequeño ocupaba demasiado espacio y dificultaba usar la UI. Si hacía que toda la página pudiera desplazarse, la gente se frustraba porque no era evidente que había que estar al principio del scroll para ver el rectángulo que estaban editando
Esta herramienta es principalmente para programar, así que estoy priorizando la experiencia de escritorio, y en móvil la estoy dejando más como una vista previa rápida y una prueba de que también funciona en mobile. Aun así, si conocen una UI similar que funcione realmente bien en móvil, me gustaría ver el enlace