background changer + pagination (javascript, jQuery)

Programovacie jazyky, rady, poradňa...
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

background changer + pagination (javascript, jQuery)

Príspevok od používateľa DeeJay3 »

Cavte napisal som pre vlastnu potrebu Background Changer s navigaciou. Je to asi moj prvy script ktory som pisal sam. Chcel by som vediet nejake rady alebo chyby ktore v kode mam, pripadne opravy kodu aby to bolo napisane lepsie ako teraz. Sem tam sa stane ze to pozadie blbne ked prepinam v navigacii. Viete mi poradit cim to bude ? Vdaka

JS

Kód: Vybrať všetko

<script type="text/javascript">
            
            $(window).load(function(){                
                
                function bgChanger (element1, element2) {
                    this.element1 = element1;
                    this.element2 = element2;
                    this.timer;
                }
                
                bgChanger.prototype = {
                    init: function(){
                        var self = this;
                        $(self.element1+" > div").css('display', 'block');
                        if (typeof self.element2 !== "undefined" && self.element2) {
                            var pagination = $("<ul></ul>");                        

                            if ($(self.element1).children().length > 0) {
                                $(self.element1+" > div").each(function(index, val){
                                    pagination.append('<li '+($(this).hasClass('active') ? 'class="active"' : '')+'><a href="#">'+(index+1)+'</a></li>');
                                });
                            }

                            if ($(self.element2).length > 0){
                                $(self.element2).html(pagination);
                                
                                $(self.element2).find("a").bind('click', function(){
                                    var index = $(this).html();
                                    self.set(index);
                                    
                                    $(this).parent().siblings().removeClass('active');
                                    $(this).parent().addClass('active');
                                    
                                    return false;
                                });
                            }
                        }
                    },
                    start: function () {
                        var self = this;                        
                        self.stop();
                                                   
                        self.timer = setInterval(function(){
                            var $active = $(self.element1).find('.active');
                            var $next = ($active.next().length > 0) ? $active.next() : $(self.element1).find('div:first');

                            var index = ($next.index()+1);

                            if (typeof self.element2 !== "undefined" && self.element2) {
                                $(self.element2+' li').removeClass('active');
                                $(self.element2+' li:nth-child('+index+')').addClass('active');
                            }

                            $next.css('z-index', 2);
                            $active.fadeOut(1500, function(){
                                $active.css('z-index', 1).show().removeClass('active');
                                $next.css('z-index', 3).addClass('active');
                            });
                        }, 7000);
                    },
                    set: function(index){
                        var self = this; 
                        self.stop();
                        
                        var $active = $(self.element1).find('.active');
                        var $next = $(self.element1+' :nth-child('+index+')');

                        $next.css('z-index', 2);
                        $active.fadeOut(1500, function(){
                            $active.css('z-index', 1).show().removeClass('active');
                            $next.css('z-index', 3).addClass('active');
                        });
                        
                        self.start();
                    },
                    stop: function(){
                        var self = this;
                        clearTimeout(self.timer);
                    }
                };
                
                var changer  = new bgChanger("#background", "#bg_pagination");
                
                changer.init();
                changer.start();
            });
            
        </script>
html

Kód: Vybrať všetko

<div id="background" >
                <div style="background-image: url('/images/content/bg_pic1.jpg');" class="active"></div>
                <div style="background-image: url('/images/content/bg_pic2.jpg');"></div>
                <div style="background-image: url('/images/content/bg_pic3.jpg');"></div>
            </div>
<div id="bg_pagination"></div>
css

Kód: Vybrať všetko

html, body{ width: 100%; height: 100%;}

#background{ padding: 0; margin: 0; width: 100%; height: 100%; position: fixed; top: 0; left: 0; }
#background > div:not(.active){ display: none; }            
#background > div{ position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1; background-repeat: no-repeat; background-attachment: fixed; background-position: left center; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; }
#background > div.active{ z-index: 3; }
awtt
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1234
Registrovaný: 01 nov 2006, 19:37
Bydlisko: San Francisco
Kontaktovať používateľa:

Re: background changer + pagination (javascript, jQuery)

Príspevok od používateľa awtt »

Na moj vkus pouzivas strasne vela self, aj tam kde to netreba.
Pozri ako funguje Function.prototype.bind
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

Re: background changer + pagination (javascript, jQuery)

Príspevok od používateľa DeeJay3 »

ako inak by som mal volat napriklad element1 lement2 a dalsie premenne ? .. kde by si to pouzil inak ? vies mi dat priklad ?
Napísať odpoveď