हाई-रेज़ोल्यूशन ग्लास इफेक्ट के लिए CSS जनरेटर
(glass3d.dev)- glass3d generator एक ऐसा टूल है जिसमें सेटिंग्स बदलते हुए ग्लास टेक्सचर CSS को तुरंत preview और copy किया जा सकता है
- मुख्य adjustment values
backdrop-filterके blur, brightness, saturation, साथ ही color और texture selection से बनी हैं - colors को HSL और alpha values से handle किया जाता है, और example value
hsl(189 80% 10% / 0.2)है - texture में rice paper, egg shell, ink jet, coarse, topology में से चुना जा सकता है
- generated CSS
.glass3d,::before,::after, और child elements केz-indexको combine करके background filter, noise texture, inner shadow, और content layer को अलग-अलग करता है
glass3d generator में adjust की जा सकने वाली values
- settings बदलने पर result interface पर ही तुरंत apply हो जाता है
- तैयार CSS को copy करके इस्तेमाल किया जा सकता है
- मुख्य setting items ये हैं
backdrop-filterblurbrightnesssaturationcolortexture
generate होने वाली CSS structure
.glass3dclass CSS variables और layer reference define करती है--filter-glass3d:blur(32px) brightness(0.85) saturate(2.5)--color-glass3d:hsl(189 80% 10% / 0.2)--noise-glass3d:transparenttextures.comकाegg-shell.pngposition: relative,z-index: 4, और कई levels केbox-shadowका इस्तेमाल करती है
.glass3d::beforebackground filter और texture apply करता है-webkit-backdrop-filterऔरbackdrop-filterमेंvar(--filter-glass3d)का इस्तेमाल करता हैbackground-colorऔरbackground-imageमें क्रमशः color variable और noise variable लगते हैंbackground-size: 100px,background-repeat: repeatset करता है
.glass3d::afterinner highlight shadow जोड़ता है- कई
inset box-shadowvalues का इस्तेमाल करता है
- कई
.glass3d > *content को ऊपर दिखाने के लिएposition: relativeऔरz-index: 6apply करता है
1 टिप्पणियां
Hacker News की राय
इस तरीके में सतह के ठीक पीछे वाले pixels के आधार पर ही blur लागू होने की समस्या है, और इसे https://www.joshwcomeau.com/css/backdrop-filter/#the-issue पर अच्छी तरह दिखाया गया है
https://news.ycombinator.com/item?id=42302907 की चर्चा के साथ पढ़ने लायक है। अगर background नीचे से move कर रहा हो, तो सिर्फ ठीक पीछे वाले pixels को blur करने की समस्या काफी अहम है; static background हो तो आम तौर पर ज्यादा मायने नहीं रखती
hardcoded element में तो ठीक चला, लेकिन ऐसी पूरी component library में इसे कैसे चलाया जाए, जहां user की branding और container queries के हिसाब से border-radius बदलता है, यह अभी सुलझाना बाकी है
इसके बजाय default material को कागज के ज्यादा करीब मानना बेहतर लगता है
मेरे लिए adjusted version depth cues से टकराता है, इसलिए वह कहीं ज्यादा distracting और ज्यादा गलत दिखता है
काफी अच्छा दिखता है, लेकिन glass की refractive nature न हो तो Liquid Glass का सबसे बड़ा योगदान मानी जाने वाली मजबूत layer separation की feeling खत्म हो जाती है
Material में designers के लिए बेहतरीन resources हैं, जो side-view 3D में दिखाते हैं कि app को consistent moving layers से बना होना चाहिए। लेकिन जब इसे 2D में मिला दिया जाता है, तो यह ढूंढना बहुत मुश्किल हो जाता है कि कौन सा feature कहां है। कोने में मौजूद action button को लोग सचमुच अक्सर देख ही नहीं पाते
motion, chrome और content को अलग करने में थोड़ा मदद करता है, लेकिन visually define करने वाले elements बहुत कम हैं। Liquid Glass की सबसे बड़ी खूबी मुझे edge distortion लगती है। content move होने पर non-linear motion बनता है, और human vision उसे तुरंत पकड़ लेती है
static screenshot हमेशा अच्छे नहीं दिखते, लेकिन motion में elements की separation अब तक देखी चीजों से कहीं बेहतर होती है। human motion detection का खूब फायदा उठाने वाला मुख्य refraction element यहां गायब है
पहले एक और शानदार web demo देखा था, लेकिन अब ढूंढना मुश्किल है; उसकी जगह यह demo mobile पर performance में खराब और visually भी कम अच्छा है, लेकिन काम कितना जटिल है, यह step-by-step अच्छी तरह दिखाता है। सिर्फ SVG filters से edge distortion implement करना काफी कठिन रास्ता है: https://atlaspuplabs.com/blog/liquid-glass-but-in-css#breaki...
Liquid Glass attempts का एक collection (CodePen Spark) भी मिला, और दूसरा link मुझे एक बहुत specifically pre-defined hardcoded SVG से बनाया गया काफी अच्छा example लगता है: https://codepen.io/spark/453 https://codepen.io/lucasromerodb/pen/vEOWpYM
लोग रोज असली glass देखते हैं, इसलिए क्या real और सही लगता है, इसकी intuition उनके पास होती है। इसलिए copycats साफ तौर पर ज्यादा खराब दिखते हैं, और Apple अपना “premium दिखने वाला” product image बनाए रख सकता है
मौजूदा project में लक्ष्य ऐसा material बनाना था जो polished महसूस हो, browsers में consistently काम करे, और real 3D का उपयोग न करे। यह बात भी सही है कि fixed background पर move करते समय effect ज्यादा अच्छा दिखता है। जिस library demo site पर काम कर रहा हूं, वहां ऐसा कर रहा हूं, लेकिन वह अभी ready नहीं है
मुझे पता है कि असली glass ऐसा behave करता है, लेकिन मैं इसकी परवाह नहीं करना चाहता। लगता है जैसे skeuomorphism के सबसे खराब हिस्से को चुनकर दोगुना जोर दिया गया हो, और iOS 7 से पहले वाला design ज्यादा पसंद करने के बावजूद मुझे ऐसा ही लगता है
effect अच्छा है, लेकिन मुझे यह असली glass जैसा महसूस नहीं होता
सबसे immediate फर्क यह है कि light bevel के साथ interact नहीं करती। मैं उम्मीद करता हूं कि light glass के अंदर वापस जाए और lighting और color को भी प्रभावित करे। सिर्फ blur डालना काफी नहीं है
साथ ही glass की अपनी shadow और दिलचस्प caustic patterns हो सकते हैं। यहां shadow दिखती है, लेकिन simple drop shadow जैसी लगती है, इसलिए यह किसी नए flow का हिस्सा बने 3D physical object के बजाय flat card जैसा दिखता है
खैर, सिर्फ CSS से इसकी नकल करना आसान नहीं है, और GPU पर चलने वाला shader ज्यादा उपयुक्त लगता है
divपर GPU shader effect कैसे apply किया जा सकता है? अगर basic HTML पर GPU effects apply नहीं कर सकते और किसी arbitrary Canvas combination जैसे custom element पर करना पड़े, तो शायद GPU effects apply कर सकने वाला पूरी तरह नया rendering engine फिर से बनाना बेहतर होगाHTML मुझे dead लगता है। text deliver करने के लिए कुछ tags काफी हैं, और बाकी ज्यादातर web pages को ad bomb बनाने में इस्तेमाल होता है। इसलिए
<text>tag और बेहतर GPU integration के साथ फिर से शुरुआत करना और बाकी सब हटाना बेहतर होगामैंने एक JavaScript version बनाया है जो page के elements को सच में refract करता है: https://real-glass.vercel.app/
ऐसी चीज़ें इकट्ठा कर रहा/रही हूँ: https://github.com/swyxio/spark-joy
दूसरे resources में glassmorphism design spec पर आधारित मुफ्त CSS generator https://ui.glass/generator/, frosted glass fixed header https://www.joshwcomeau.com/css/backdrop-filter/, glassy glassmorphism codepen और in context हैं
वाकई बहुत बढ़िया बनाया है। यह देखकर हमेशा हैरानी होती है कि computer graphics कोई “एक अजीब-सी तरकीब” नहीं, बल्कि एक के ऊपर एक रखी 5 तरकीबों जैसा है
browser compatibility तक मिलाना एक अतिरिक्त मुश्किल है। उत्सुक हूँ कि किस हिस्से में सबसे ज्यादा resources लगते हैं, इसका कोई अंदाज़ा है क्या। सीधे सोचें तो
backdrop-filterही लगता हैआपका intuition सही है, और सबसे resource-heavy हिस्सा
backdrop-filterका blur processing है। blur value जितनी बड़ी होती है, rendering से पहले उतने ही ज्यादा neighboring pixels को “reference” करना पड़ता हैएक और महँगा factor यह है कि scroll करने पर या video background से glass का look बदलने पर इसे लगातार फिर से draw करना पड़ता है
लगता है यह मेरी glass implementation जैसी technique इस्तेमाल करता है: https://news.ycombinator.com/item?id=42225481
खासकर
box-shadowका जरूरत से ज्यादा इस्तेमाल करने वाला हिस्सा मिलता-जुलता हैछोटी समस्या: ऊपर वाले हिस्से और toggle/code वाले scroll area के बीच की shadow नीचे scroll करने पर गायब हो जाती है। शायद शुरू में छिपी होनी चाहिए और फिर दिखनी चाहिए
वे “overhang”
box-shadowइस तरह design किए गए थे कि वे किसी element से नीचे की ओर cast न हों, बल्कि element के अंदर ही apply हों; इस case में मुझे एहसास हुआ कि दूसरी तरह वाली shadow apply करनी चाहिएमेरे phone पर content scroll काफी धीमा है। सोच रहा/रही हूँ कि क्या कोई और scroll effect है जो जानबूझकर इसे धीमा बना रहा है, या यह glass effect का side effect है
शायद मैंने miss किया हो, लेकिन mobile पर box को hide या collapse किया जा सके तो यह कहीं ज्यादा useful होगा
अभी यह पूरी screen घेर लेता है, इसलिए पीछे का effect लगभग दिखता ही नहीं। फिर भी रुचि है, इसलिए बाद में किसी बड़े screen पर फिर try करूँगा/करूँगी, लेकिन box hide करने का option हो तो काफी बेहतर लगेगा
पहले implementation में generator UI के ऊपर एक छोटा demo rectangle रखा था, लेकिन छोटा होने पर भी वह बहुत ज्यादा जगह लेता था और UI इस्तेमाल करना मुश्किल हो गया। पूरी page को scroll करने लायक बनाने पर लोगों को यह स्पष्ट नहीं था कि edit किए जा रहे rectangle को देखने के लिए scroll के बिल्कुल ऊपर होना पड़ेगा, जिससे वे frustrate हुए
यह tool मुख्य रूप से coding के लिए है, इसलिए desktop experience को प्राथमिकता दी जा रही है, और mobile को quick preview और यह साबित करने तक रखा गया है कि यह mobile पर भी काम करता है। फिर भी अगर आपको कोई ऐसा similar UI पता हो जो mobile पर सचमुच अच्छा काम करता है, तो link देखना चाहूँगा/चाहूँगी