Generator CSS untuk Efek Kaca Resolusi Tinggi
(glass3d.dev)- glass3d generator adalah alat untuk langsung mempratinjau dan menyalin CSS bertekstur kaca sambil mengubah nilai pengaturan
- Nilai penyesuaian utamanya terdiri dari blur, brightness, saturation pada
backdrop-filter, serta pilihan warna dan tekstur - Warna ditangani dengan HSL dan nilai alfa; contoh nilainya adalah
hsl(189 80% 10% / 0.2) - Tekstur dapat dipilih dari rice paper, egg shell, ink jet, coarse, dan topology
- CSS yang dihasilkan menggabungkan
.glass3d,::before,::after, sertaz-indexelemen anak untuk memisahkan filter latar belakang, tekstur noise, bayangan dalam, dan layer konten
Nilai yang dapat disesuaikan di glass3d generator
- Saat nilai pengaturan diubah, hasilnya langsung diterapkan pada antarmuka itu sendiri
- CSS yang sudah selesai dapat disalin dan digunakan
- Item pengaturan utama adalah sebagai berikut
backdrop-filterblurbrightnesssaturationcolortexture
Struktur CSS yang dihasilkan
- Class
.glass3dmendefinisikan variabel CSS dan acuan layer--filter-glass3d:blur(32px) brightness(0.85) saturate(2.5)--color-glass3d:hsl(189 80% 10% / 0.2)--noise-glass3d:egg-shell.pngdaritransparenttextures.com- Menggunakan
position: relative,z-index: 4, dan beberapa tingkatbox-shadow
.glass3d::beforemenerapkan filter latar belakang dan tekstur- Menggunakan
var(--filter-glass3d)pada-webkit-backdrop-filterdanbackdrop-filter - Masing-masing variabel warna dan variabel noise dimasukkan ke
background-colordanbackground-image - Mengatur
background-size: 100pxdanbackground-repeat: repeat
- Menggunakan
.glass3d::aftermenambahkan bayangan highlight bagian dalam- Menggunakan beberapa nilai
inset box-shadow
- Menggunakan beberapa nilai
.glass3d > *menerapkanposition: relativedanz-index: 6agar konten terlihat di atas
1 komentar
Komentar Hacker News
Pendekatan ini punya masalah karena menerapkan blur hanya pada piksel tepat di belakang permukaan, dan hal itu ditunjukkan dengan baik di https://www.joshwcomeau.com/css/backdrop-filter/#the-issue
Layak dibaca bersama diskusi di https://news.ycombinator.com/item?id=42302907. Jika latar belakang bergerak di bawahnya, masalah blur yang hanya mengenai piksel tepat di belakang menjadi cukup penting; jika latarnya statis, biasanya tidak terlalu penting
Itu berjalan baik pada elemen yang di-hardcode, tetapi saya masih harus mencari cara agar bisa bekerja di seluruh pustaka komponen yang border-radius-nya berubah sesuai branding pengguna dan container query
Saya justru cenderung menganggap material default lebih mirip kertas
Bagi saya, versi yang disesuaikan berbenturan dengan petunjuk kedalaman, sehingga jauh lebih mengganggu dan tampak lebih salah
Terlihat cukup bagus, tetapi tanpa refraksi kaca, kesan pemisahan layer yang kuat—yang menurut saya merupakan kontribusi terbesar Liquid Glass—jadi hilang
Material punya materi desainer yang bagus, menampilkan dari sudut 3D bahwa aplikasi seharusnya tersusun dari layer bergerak yang konsisten. Namun ketika digabungkan menjadi 2D, sangat sulit menemukan fungsi mana berada di mana. Sering sekali orang tidak melihat tombol aksi di sudut
Gerakan memang sedikit membantu membedakan chrome dan konten, tetapi terlalu sedikit elemen yang mendefinisikannya secara visual. Menurut saya, keunggulan terbesar Liquid Glass adalah distorsi tepi. Saat konten bergerak, muncul gerakan nonlinier, dan penglihatan manusia langsung menangkapnya
Tangkapan layar statis tidak selalu terlihat bagus, tetapi saat bergerak, pemisahan elemennya jauh lebih jelas daripada hal-hal lain yang pernah saya lihat. Elemen refraksi inti yang sangat memanfaatkan deteksi gerak manusia itu tidak ada di sini
Dulu saya pernah melihat satu demo web lain yang bagus, tetapi sekarang sulit ditemukan; sebagai gantinya, demo ini performanya buruk di mobile dan secara visual juga kurang bagus, tetapi menjelaskan tahap demi tahap betapa rumitnya pekerjaan itu. Mengimplementasikan distorsi tepi hanya dengan filter SVG adalah jalan yang cukup berat: https://atlaspuplabs.com/blog/liquid-glass-but-in-css#breaki...
Saya juga menemukan kumpulan percobaan Liquid Glass (CodePen Spark), dan menurut saya tautan kedua adalah contoh yang cukup bagus, dibuat dengan SVG hardcoded yang sudah didefinisikan sebelumnya secara sangat spesifik: https://codepen.io/spark/453 https://codepen.io/lucasromerodb/pen/vEOWpYM
Orang melihat kaca sungguhan setiap hari, jadi mereka punya intuisi tentang apa yang terasa nyata dan benar. Karena itu, tiruannya terlihat jelas lebih buruk, dan Apple bisa mempertahankan citra produk yang “terlihat premium”
Untuk proyek saat ini, tujuannya adalah membuat material yang terasa polished, bekerja konsisten lintas browser, dan tidak memakai 3D sungguhan. Benar juga bahwa efeknya lebih terlihat saat bergerak di atas latar tetap. Saya melakukan itu di situs demo pustaka yang sedang dikerjakan, tetapi belum siap
Saya tahu kaca sungguhan memang bekerja seperti itu, tetapi saya tidak ingin memikirkannya. Rasanya seperti mengambil bagian terburuk dari skeuomorphism lalu mendorongnya dua kali lipat; bahkan sebagai orang yang lebih menyukai masa sebelum iOS 7, saya tetap merasa begitu
Ini memang efek yang keren, tetapi bagi saya tidak terasa seperti kaca sungguhan
Perbedaan paling langsung adalah cahaya tidak berinteraksi dengan bevel. Saya berharap cahaya masuk kembali ke dalam kaca dan juga memengaruhi pencahayaan serta warna. Sekadar menambahkan blur saja tidak cukup
Selain itu, kaca bisa memiliki bayangannya sendiri dan pola kaustik yang menarik. Di sini bayangannya terlihat, tetapi terasa seperti drop shadow sederhana, sehingga tampak seperti kartu datar, bukan objek fisik 3D yang menjadi bagian dari alur baru
Bagaimanapun, ini tidak mudah ditiru hanya dengan CSS, dan shader yang berjalan di GPU tampaknya lebih cocok
divbiasa? Jika efek GPU tidak bisa diterapkan ke HTML dasar dan harus ke elemen kustom seperti kombinasi Canvas arbitrer, mungkin lebih baik membuat ulang mesin rendering yang benar-benar baru yang bisa menerapkan efek GPUMenurut saya HTML sudah mati. Untuk menyampaikan teks, beberapa tag saja cukup; sebagian besar sisanya dipakai untuk mengubah halaman web menjadi bom iklan. Jadi lebih baik mulai lagi dengan tag
<text>dan integrasi GPU yang lebih baik, lalu buang sisanyaSaya membuat versi JavaScript yang benar-benar merefraksikan elemen-elemen di halaman: https://real-glass.vercel.app/
Sedang mengumpulkan hal-hal seperti ini: https://github.com/swyxio/spark-joy
Sebagai materi lain, ada generator CSS gratis berbasis spesifikasi desain glassmorphism https://ui.glass/generator/, header tetap bergaya kaca berembun https://www.joshwcomeau.com/css/backdrop-filter/, glassy glassmorphism codepen dan in context
Dibuat dengan sangat baik. Selalu mengagumkan bahwa grafika komputer bukan “satu trik aneh”, melainkan lebih mirip 5 trik yang ditumpuk berlapis-lapis
Menyesuaikan kompatibilitas lintas browser adalah tantangan tambahan. Penasaran apakah ada gambaran bagian mana yang paling boros resource. Kalau dipikir sederhana, sepertinya
backdrop-filterInstingnya tepat; bagian yang paling boros resource adalah blur pada
backdrop-filter. Semakin besar nilai blur, semakin banyak piksel tetangga yang harus “dirujuk” sebelum renderingFaktor mahal lainnya adalah harus terus digambar ulang saat scrolling atau ketika latar video mengubah tampilan kaca
Sepertinya memakai teknik yang mirip dengan implementasi kaca saya: https://news.ycombinator.com/item?id=42225481
Terutama bagian yang memanfaatkan
box-shadowsecara berlebihan terasa miripMasalah kecil: bayangan antara bagian atas dan area scroll yang berisi toggle/kode menghilang saat menggulir ke bawah. Mungkin seharusnya awalnya tersembunyi lalu muncul
“Overhang”
box-shadowitu didesain untuk diterapkan di dalam elemen, bukan sebagai bayangan yang jatuh ke bawah dari suatu elemen, dan dalam kasus ini saya sadar perlu menerapkan bayangan dengan cara yang terakhirDi ponsel saya, scrolling kontennya cukup lambat. Penasaran apakah ada efek scroll lain yang sengaja membuatnya lambat, atau itu efek samping dari efek kaca
Mungkin saya melewatkan sesuatu, tapi di mobile rasanya akan jauh lebih berguna kalau kotaknya bisa disembunyikan atau diciutkan
Saat ini kotak itu memenuhi seluruh layar sehingga efek di belakangnya hampir tidak terlihat. Meski begitu saya tetap tertarik dan berencana mencobanya lagi nanti di layar yang lebih besar, tapi opsi untuk menyembunyikan kotak akan membuatnya jauh lebih baik
Pada implementasi pertama, saya menaruh persegi demo kecil di atas UI generator, tetapi bahkan yang kecil pun memakan terlalu banyak ruang sehingga UI sulit dipakai. Kalau seluruh halaman dibuat bisa discroll, orang-orang jadi frustrasi karena tidak jelas bahwa mereka harus berada di bagian paling atas scroll untuk melihat persegi yang sedang diedit
Alat ini utamanya untuk coding, jadi saya memprioritaskan pengalaman desktop, sementara mobile lebih diposisikan sebagai pratinjau cepat dan bukti bahwa ini juga berjalan di mobile. Namun kalau ada UI serupa yang benar-benar bekerja bagus di mobile, saya ingin melihat tautannya