HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/yoda-ict/yoda-ict.nl/wwwroot/public/js/scroll_delay.js
(function($) {

    /**
     * Delays elements on scroll.
     * Used for creating a parallax effect.
     *
     * @param element
     * @param options
     */
    $.scrollDelay = function(element, options) {

        var defaults = {
            delay :.5,
            trigger : 0,
            anchor : 'top'
        };

        // Reference to this
        var t = this;

        // Create settings object
        t.settings = {};

        // jQuery reference to element
        var $element = $(element);
        var position;
        var startY;
        var topOffsetY;

        // Constructor
        t.init = function ()
        {
            if( $(window).width() >= 600)
            {

                // Extend the defaults with options, save in settings
                t.settings = $.extend({}, defaults, options);

                position = $element.css('position');
                topOffsetY = $element.offset().top;

                // Prepare fixed elements
                if(position == 'fixed')
                {
                    // Get offset relative to window
                    startY = topOffsetY;

                    // Convert startY to "relative to website-top"
                    var scrollTop = $(document).scrollTop();
                    startY = startY - scrollTop;

                }
                else
                {
                    // Get offset relative to parent
                    startY = $element.position().top;
                }

                t.delay();
            }
            else
            {
                //$element.css({ top: 0, bottom: 0 });
            }
        };


        t.delay = function()
        {
            if( $(window).width() >= 600)
            {
                var scrollTop = $(document).scrollTop();;
                var top, bottom;

                // Calculate top for fixed elements
                if(position == 'fixed')
                {
                    top = -scrollTop * t.settings.delay + startY;
                }
                else
                {
                    var wh = $(window).height();
                    var triggerLine = wh + scrollTop;
                    if(triggerLine > topOffsetY + t.settings.trigger)
                    {
                        // Trigger animation
                        top = -(triggerLine - topOffsetY - t.settings.trigger) * t.settings.delay + startY;
                        bottom = -(triggerLine - topOffsetY - t.settings.trigger) * t.settings.delay * -1;
                    }
                }

                // Css
                if(t.settings.anchor == 'top')
                {
                    $element.css({ top: top+'px' });
                }
                else if(t.settings.anchor == 'bottom')
                {
                    $element.css({ bottom: bottom+'px' });
                }
            }
            else
            {
                //$element.css({ top: 0, bottom: 0 });
            }

        };

        t.init();
    }

    // Extend Jquery with function
    $.fn.scrollDelay = function(options)
    {
        return this.each(function()
        {
            // if plugin has not already been attached to the element
            if ($(this).data('sd') == undefined)
            {
                // create a new instance of the plugin
                var scrollDelay = new $.scrollDelay(this, options);
                $(this).data('sd', scrollDelay);
            }
        });
    }
})(jQuery);