I’m building a book library webapp with books draggable between the shelves.
Applying box-shadow to books made them look slightly more realistic but I wondered if I can go further and dynamically calculate box-shadow values for every book by its position relative to a single chosen “light source” point, like a game engine would do.
Thus, if we choose top center point to be the light source, a book on the left will have a left bottom shadow, and a book on the right will have a right bottom shadow. Books at the bottom would get shadows of larger height, et cetera. We might need to specify depth (z-coordinate) for the light source as well as its position.
While box-shadow doesn’t allow for complex realistic shadows, I suspect it would be more than enough to adjust shadow size and angle with regards to their position for rectangular objects such as books to make them a lot more realistic.
Has anyone already looked into implementing this in JavaScript? Are you aware of any open source libraries that calculate box-shadow values with regards to a specific light source point? If not, is the idea inherently wrong in some way I haven’t thought of, or is it that nobody has tried just this yet?
A bloke called Jeff Pamer made an experiment about this
requires jQuery and jQuery UI Draggable (see demo)
your html:
your JavaScript