PageSourceSearch

https://consumer.org.my/wp-content/themes/shopping-store-lite/assets/js/sticky-header.js

js consumer.org.my collected 2026-10-02 06:39:58 UTC 4,413 bytes, 129 lines download raw bytes

1/*
2 *  jQuery Sticky Header v1.0.1
3 *  Author: Danish Iqbal
4 *  Website: http://plugins.imdanishiqbal.com/sticky-header
5 *
6 *  Licensed under MIT
7 *
8 */
9(function($) {
10    "use strict";
11    $.fn.stickMe = function(options) {
12        // Assigning variables
13        var $window = $(window),
14            $document = $(document),
15            $elemTopOffset,
16            $body = $('body'),
17            position = 0,
18            $elem = this,
19            $elemHeight = $elem.innerHeight(),
20            $win_center = $window.height() / 2,
21            $pos,
22            settings = $.extend({
23                transitionDuration: 300,
24                shadow: false,
25                shadowOpacity: 0.3,
26                animate: true,
27                triggerAtCenter: true,
28                topOffset: $elemHeight,
29                transitionStyle: 'fade',
30                stickyAlready: false
31            }, options);
32        // Initial state
33        $elem
34            .addClass('stick-me')
35            .addClass('not-sticking');
36        switch (settings.triggerAtCenter) {
37            case (settings.triggerAtCenter && settings.topOffset < $elemHeight) || (settings.triggerAtCenter && settings.topOffset > $elemHeight):
38                settings.triggerAtCenter = false;
39                break;
40        }
41        if (settings.stickyAlready) {
42            settings.triggerAtCenter = false;
43            settings.topOffset = 0;
44            stick();
45        }
46
47        $elemTopOffset = $elem.offset().top;
48
49        function $elem_slide() {
50            if (settings.animate === true && settings.transitionStyle === 'slide' && settings.stickyAlready !== true) {
51                $elem.slideDown(settings.transitionDuration);
52            }
53            if (settings.animate === true && settings.transitionStyle === 'fade' && settings.stickyAlready !== true) {
54                $elem.fadeIn(settings.transitionDuration);
55            } else {
56                $elem.show();
57            }
58            $elem.removeClass('not-sticking');
59        }
60
61        function stick() {
62            if ($elem.hasClass('sticking')) {
63                $elem.trigger('sticking');
64            }
65            if (position === 0) {
66                position = 1;
67                if(settings.stickyAlready === false) {
68                    $elem.trigger('sticky-begin');
69                }
70            }
71            if ($elem.hasClass('not-sticking')) {
72                $elem.hide();
73                $elem_slide();
74            }
75            if (settings.shadow === true) {
76                $elem.css('box-shadow', '0px 1px 2px rgba(0,0,0,' + settings.shadowOpacity + ')');
77            }
78            $elem
79                .addClass('sticking')
80                .css('position', 'fixed')
81                .css('top', '0');
82            $body.css('padding-top', $elemHeight);
83        }
84
85        function unstick() {
86            if (settings.shadow === true) {
87                $elem.css('box-shadow', 'none');
88            }
89            $elem.addClass('not-sticking')
90                .removeClass('sticking')
91                .show()
92                .css('position', 'relative');
93            $body.css('padding-top', '0');
94        }
95        $window.scroll(function() {
96            $pos = $window.scrollTop();
97            if ($pos === 0) {
98                position = 0;
99                $elem.trigger('top-reached');
100            }
101            if (settings.triggerAtCenter === true) {
102                if ($pos > $win_center + $elemHeight) {
103                    stick();
104                }
105            }
106            if (settings.triggerAtCenter === false) {
107                if ($pos > settings.topOffset) {
108                    stick();
109                }
110            }
111            if ($pos + $window.height() > $document.height() - 1) {
112                $elem.trigger('bottom-reached');
113            }
114            if (settings.triggerAtCenter === true) {
115                if ($pos < (1 + $elemTopOffset)) {
116                    unstick();
117                }
118            }
119            if (settings.triggerAtCenter === false) {
120                if ($pos < 1) {
121                    if (settings.stickyAlready !== true) {
122                        unstick();
123                    }
124                }
125            }
126        });
127        return this;
128    };
129}(jQuery));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.