इस्तेमाल करने का तरीका
- किसी प्रीसेट से शुरुआत करें या पहली परत का ऑफ़सेट, ब्लर, स्प्रेड, रंग और opacity बदलें।
- ज़्यादा स्वाभाविक गहराई के लिए और परतें जोड़ें, या अंदरूनी छाया के लिए “Inset” चुनें।
- अपने डिज़ाइन के अनुसार प्रीव्यू का बैकग्राउंड और बॉक्स का रंग बदलें, फिर CSS कॉपी करें।
यह कैसे काम करता है
box-shadow की हर परत में ये मान होते हैं: क्षैतिज ऑफ़सेट, ऊर्ध्वाधर ऑफ़सेट, ब्लर रेडियस, स्प्रेड रेडियस और रंग; इनके पहले वैकल्पिक रूप से inset भी दिया जा सकता है। धनात्मक ऑफ़सेट से छाया दाईं ओर और नीचे जाती है। ब्लर किनारों को मुलायम करता है और ऋणात्मक नहीं हो सकता; स्प्रेड ब्लर से पहले छाया को बड़ा (धनात्मक) या छोटा (ऋणात्मक) करता है। कई परतों को कॉमा से अलग किया जाता है और पहली परत सबसे ऊपर दिखाई जाती है।
वास्तविक ऊँचाई का प्रभाव देने के लिए आम तौर पर कम opacity वाली छोटी, स्पष्ट छाया को बड़ी, मुलायम छाया के साथ जोड़ा जाता है—“Elevated” प्रीसेट यही करता है। रंग rgba() में लिखे जाते हैं, ताकि opacity स्पष्ट हो। छायाएँ एलिमेंट के border-radius के अनुसार बनती हैं और लेआउट में जगह नहीं लेतीं, इसलिए वे अन्य एलिमेंट को कभी नहीं खिसकातीं।
कई एलिमेंट पर बहुत बड़े blur मानों वाली छायाएँ देने से कम क्षमता वाले फ़ोन पर स्क्रॉल धीमा हो सकता है। अगर आप छाया को ऐनिमेट करते हैं, तो आम तौर पर box-shadow को ऐनिमेट करने के बजाय ऐसी pseudo-element को फ़ेड इन करना ज़्यादा सहज रहता है जिस पर छाया पहले से लगी हो।
उदाहरण
हल्के रंग के पेज पर कार्ड
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.12), 0 8px 24px -4px rgba(0, 0, 0, 0.18); कार्ड को स्पष्ट किनारा और हल्की उठी हुई छाया देता है।
लेआउट बदले बिना फ़ोकस रिंग
0 ऑफ़सेट, 0 ब्लर और 3px स्प्रेड वाली परत को ब्रांड रंग में रखने से बटन के चारों ओर ठोस रिंग बनती है। बॉर्डर के विपरीत, इससे एलिमेंट का आकार नहीं बदलता।
दबाया हुआ इनपुट फ़ील्ड
inset 0 2px 6px 0 rgba(0, 0, 0, 0.25) से टेक्स्ट फ़ील्ड थोड़ा धँसा हुआ दिखता है।
अक्सर पूछे जाने वाले सवाल
box-shadow और filter: drop-shadow() में क्या अंतर है?
box-shadow एलिमेंट के बॉक्स और border-radius के अनुसार बनता है और इसमें स्प्रेड तथा inset का विकल्प होता है। drop-shadow() पारदर्शी PNG या SVG इमेज के हिस्सों सहित दिखाई देने वाली आकृति के अनुसार बनता है, लेकिन इसमें स्प्रेड या inset नहीं होता।
मेरी छाया कट क्यों रही है?
overflow: hidden वाला पैरेंट अपने बॉक्स के बाहर की हर चीज़ को काट देता है, छाया को भी। पैरेंट में padding जोड़ें या overflow नियम को कहीं और लगाएँ।
मुझे कितनी परतें इस्तेमाल करनी चाहिए?
ज़्यादातर इंटरफ़ेस के लिए एक या दो परतें काफ़ी हैं। ज़्यादा परतों से छाया अधिक सहज दिख सकती है, लेकिन उन्हें रेंडर करने में थोड़ा ज़्यादा समय लगता है—खासकर लंबी सूचियों में।
गोपनीयता
CSS आपके ब्राउज़र में जनरेट होता है। कुछ भी अपलोड या स्टोर नहीं किया जाता।