2012-08-19 32 views
10

नीचे चित्र पर एक नजर डालें। अब मैं जो करने की कोशिश कर रहा हूं वह 2.5 डी कार्यक्षमता को लागू करना है:सीएसएस "वास्तविक" छाया (प्रकाश स्रोत)

मुझे भूरे रंग की छाया कुछ हद तक 3 डी-आईएसएच चाहिए। पहले तो मैं इस तरह बॉक्स छाया मूल्य के लिए "Y" अक्ष आवंटित करने के लिए सोच रहा था:

"box-shadow: -5px -5px 10px" + value.tallness + "#888" 

लेकिन परिणाम ऊपर छवि है।

किसी भी तरफ छाया बनाने के बारे में कोई विचार, जैसे कहीं से एक प्रकाश स्रोत था?

अतिरिक्त - "प्रकाश स्रोत" को स्थानांतरित करने के बारे में क्या?

+0

मैं jsfiddle पर एक उदाहरण पर काम कर रहा हूं। चलती रोशनी स्रोत बनाने की कोशिश कर रहा है: डी – Cristy

+0

यदि आपको प्लगइन realshadows.js का उपयोग करने में कोई फर्क नहीं पड़ता है तो वास्तव में अच्छा है। http://jsfiddle.net/AA69G/ – Jeemusu

उत्तर

19

ये लीजिए: छाया को प्रभावित करने के http://jsfiddle.net/KaCDN/15/

खींचें प्रकाश स्रोत।

लम्बे ब्लॉक:

  • बड़ा शीर्ष है, छोड़ दिया सीमा
  • ड्रॉप छाया आगे
  • वे छाया है blurier
+1

+1, सटीक (यथार्थवादी) नहीं है, लेकिन +1 –

+0

अद्यतन किया गया है: लम्बे ब्लॉकों में हल्का रंग होता है। – Cristy

+0

अद्यतन 2: छोटे ब्लॉक छोटे ब्लॉक से आगे छाया ड्रॉप करते हैं। – Cristy

4

छाया एक छोटे से सरल स्थानांतरित करने के लिए कैसे:

$(document).on('mousemove', function(e) { 
    var elm = $("#test"), 
     x = ~Math.round((e.pageX - elm[0].offsetLeft - 150)/30), 
     y = ~Math.round((e.pageY - elm[0].offsetTop - 150)/30), 
     z = 10+Math.abs(x)+Math.abs(y), 
     cssVal = x+'px '+y+'px '+z+'px 10px #525252'; 

    elm.css({'-webkit-box-shadow' : cssVal, 'box-shadow' : cssVal }); 
}); 

FIDDLE

+0

+1 इसे पसंद है! अच्छा एक - मैं यह भी जोड़ूंगा: यदि प्रकाश स्रोत बहुत दूर है: छाया को अधिक 'फैलाव' बनाएं;) –

+0

@ रोको - ज़रूर, क्यों नहीं! मेरा जवाब संपादित किया? – adeneo

+0

+100 अच्छा ... यह कुछ यथार्थवादी efx है! –

0

एक अधिक अद्यतित उत्तर Shine.js (http://bigspaceship.github.io/shine.js/) जैसी लाइब्रेरी का उपयोग करना होगा जो आपके लिए यह सटीक समस्या को संभालेगा।