2012-08-19 8 views
10

Haben Sie einen Blick auf das Bild unten:CSS "realistischer" Schatten (Lichtquelle)

skyscrapers

Die blauen Kästen sind divs. Nun, was ich versuche zu tun, ist eine Art von 2.5D Funktionalität zu implementieren:

Ich möchte die grauen Schatten etwas 3D-ish sein. Zuerst dachte ich an die Box-Schattenwert „Y“ Achse wie folgt zuzuordnen:

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

aber das Ergebnis ist das Bild oben.

Irgendeine Idee, wie man den Schatten nur auf einer Seite macht, als ob irgendwo eine Lichtquelle wäre?

EXTRA - was ist mit einem Verschieben "Lichtquelle"?

+0

Ich arbeite an einem Beispiel für jsfiddle. Versuchen, die bewegliche Lichtquelle zu machen: D – Cristy

+0

Wenn es Ihnen nichts ausmacht mit einem Plugin realshadows.js ist wirklich gut. http://jsfiddle.net/AA69G/ – Jeemusu

Antwort

19

Dort gehen Sie: http://jsfiddle.net/KaCDN/15/

Drag Lichtquelle Schatten zu beeinflussen.

Taller Blöcke:

  • haben größere oben, links Grenze
  • Schlagschatten weiter
  • sie sind Schatten blurier
+1

+1, nicht präzise (realistisch), aber +1 sowieso –

+0

Aktualisiert: größere Blöcke haben eine hellere Farbe. – Cristy

+0

Update2: Größere Blöcke löschen Schatten weiter als kürzere Blöcke. – Cristy

4

Wie ist der Schatten ein wenig einfacher zu bewegen:

$(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 gefällt es! Netter - ich würde auch hinzufügen: wenn die Lichtquelle weit weg ist: den Schatten 'dispersiver' machen;) –

+0

@Roko - Sicher, warum nicht! Bearbeitete meine Antwort? – adeneo

+0

+100 Nun ... das ist eine realistische efx! –