【问题标题】:A Good jQuery drop shadow plugin?一个好的 jQuery 投影插件?
【发布时间】:2010-10-14 04:34:27
【问题描述】:

在我的业余时间我尝试学习 javascript 和 jQuery。我通常在网站上进行实验。当页面上出现某些元素时,我想实现微弱的阴影效果。这给出了 -

  1. 这看起来好像该元素位于页面上的其他元素之上。
  2. 并让这个新元素成为值得关注的重要元素。

我怎样才能使用 jQuery 来获得它。在某些地方,他们建议使用“图像精灵”。但我想避免为此使用图片,因为 -

  1. 我不想每次想要为某些新元素添加阴影效果时都打开 Photoshop。
  2. 图像需要一些时间来加载。因此,一旦元素出现在页面上,加载图像就需要一些时间,此时阴影效果错觉就消失了。

另外,我听说 CSS3 内置了这种阴影效果。但是有不同的浏览器使用不同的版本。加上 IE* 浏览器占多数。我希望它适用于所有版本的 IE。我怎样才能在大多数浏览器中尽可能统一地获得这种效果。

【问题讨论】:

    标签: javascript jquery css jquery-ui jquery-plugins


    【解决方案1】:

    两年前有人有exact same question 就在另一周。选择的答案是 2007 年的 unmaintained drop shadow plugin,但您可能还想看看其他答案。

    尽管这是一个见仁见智的问题,但我相信 CSS3 是您最好的选择,它为那些支持它的浏览器提供渐进式增强。这是CSS3, Please! 上显示的一组阴影属性示例:

    .box_shadow {
         -moz-box-shadow: 0px 0px 4px #333; 
      -webkit-box-shadow: 0px 0px 4px #333; 
              box-shadow: 0px 0px 4px #333; 
    }
    

    【讨论】:

    • 是的,在发布此问题之前,我查看了该链接。我放弃它主要是因为它是在 2 年前被问到的。从那以后发生了很多变化,另外我不想在我的试验中采用未维护的代码库。
    • 但是 IE 呢?大多数人仍在使用 IE。
    • IE9 支持box-shadow 属性。对于早期版本的 IE,您需要使用神秘的 blur 过滤器。这大约是您可以获得的最接近的值:msdn.microsoft.com/en-us/library/ms532979(VS.85).aspx
    【解决方案2】:

    我已经在我的博客上写了一篇关于如何创建 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'
      });
    });
    

    【讨论】:

      【解决方案3】:

      http://plugins.jquery.com/project/DropShadow

      这是一个相当不错的插件!

      您可以在此处查看演示:

      http://dropshadow.webvex.limebits.com/

      【讨论】:

        猜你喜欢
        • 2010-09-14
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 2014-08-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        相关资源
        最近更新 更多