我已经在我的博客上写了一篇关于如何创建 jQuery 投影效果的文章。你可以check it out here。该插件基本上在这些元素后面创建一个 div 以创建阴影效果。 See the demo of that old version here.
我现在修改了插件,它现在使用 CSS3 来为支持它的浏览器提供阴影效果,或者为不支持的浏览器使用相同的 div-based shadow .代码如下:
/**
* Drop Shadow Plugin jQuery
* http://sarfraznawaz.wordpress.com/
* Author: Sarfraz Ahmed (sarfraznawaz2005@gmail.com)
*/
(function($){
$.fn.dropshadow = function(settings){
// Extend default settings
var opts = $.extend({}, $.fn.dropshadow.defaults, settings);
// Check if CSS3 is supported
var style = $('div')[0].style;
var isCSS3 = style.MozBoxShadow !== undefined || style.WebkitBoxShadow !== undefined || style.BoxShadow !== undefined;
return this.each(function(settings){
var options = $.extend({}, opts, $(this).data());
var $this = $(this);
if (!isCSS3){
var styles = {
position: 'absolute',
width: $this.width() + 'px',
height: $this.height() + 'px',
backgroundColor: options.shadowColor,
zIndex: options.shadowLayer,
top: ($this.offset().top + parseInt(options.distance, 10)) + 'px',
left: ($this.offset().left + parseInt(options.distance, 10)) + 'px'
};
}
else{
var boxshadow = options.distance + ' ' + options.distance + ' ' + options.blur + ' ' + options.shadowColor;
var styles = {
position: 'absolute',
width: $this.width() + 'px',
height: $this.height() + 'px',
backgroundColor: options.shadowColor,
zIndex: options.shadowLayer,
top: $this.offset().top + 'px',
left: $this.offset().left + 'px',
MozBoxShadow:boxshadow,
WebkitBoxShadow:boxshadow,
BoxShadow:boxshadow
};
}
$('<div>').appendTo($('body')).css(styles);
});
}
// set default option values
$.fn.dropshadow.defaults = {
shadowColor: '#DFDFDF',
shadowLayer: -1,
distance:'5px',
blur:'3px'
}
})(jQuery);
这里是如何使用它:
$(window).load(function(){
$('.shadow').dropshadow({
shadowColor: '#cccccc',
shadowLayer: -100,
distance:'6px',
blur:'3px'
});
});