javascript - Creating a sliding image gallery that does not glitch on image change -


i have created sliding image gallery , when button pushed slides picture across , updates image attribute relevant sections. works 50% of time. other times there second glitch , images go in place expected. have attached javascript methods animate method , array change method. have looked elsewhere , cannot see else similar issue or going wrong, when doesn't happen often.

imagegallery.leftselect.onclick = function () {     window.settimeout(imagegallery.rightclick, 250);     imagegallery.animateimages('.image1', '.imageright');     imagegallery.animateimages('.imageright', '.imagenoneright');     imagegallery.animateimages('.imageleft', '.image1');     imagegallery.animateimages('.imagenoneleft', '.imageleft'); }; 

animateimages: function (classfrom, classto) {     var classmoving = $(classfrom);     var classgoingto = $(classto);      classmoving.animate({         top: classgoingto.css('top'),         left: classgoingto.css('left'),         width: classgoingto.css('width'),         opacity: classgoingto.css('opacity'),     }, 258, function () {         console.log('animated');         classmoving.css({"width":'', "opacity":'', "top":'', "left":'', });     }); },  rightclick: function () {     imagegallery.imagesdisplay.push(imagegallery.imagesdisplay.shift());      imagegallery.imagenoneleft.setattribute('src', imagegallery.imagesdisplay[2]);     imagegallery.imageleft.setattribute('src', imagegallery.imagesdisplay[1]);     imagegallery.imagemain.setattribute('src', imagegallery.imagesdisplay[0]);     imagegallery.imageright.setattribute('src', imagegallery.imagesdisplay[10]);     imagegallery.imagenoneright.setattribute('src', imagegallery.imagesdisplay[9]);  }, 

can assist, need work?

if there not clear or need more code let me know.

thanks,

first things first, culprit setattribute of images i.e. whatever doing inside rightclick , leftclick functions reasons why seeing glitch. changing src of img tag produces glitch.

but cannot remove because approach relies heavily on swapping of images.

i had breakdown , understand approach first. way worked animate, example, image1 (the centered one) move position of imageleft upon click on rightcarousel button. on same click, had settimeout of duration of animation call rightclick function. rightclick function swaps images image1 can remain @ center , images can come , go after animation. problem.

what had change image tags i.e. imagenoneleft, imageleft, image1, imageright & imagenoneright change each others classes such position remains changed after animations.

also, had add animateimages line inside leftselect , rightselect callbacks animate furthest images i.e. imagenoneleft & imagenoneright animate each other's positions respect click of buttons.

take @ this jsfiddle. understand lot better. , let me know if have questions.

javascript:

var imagegallery={     prefix:'https://dl.dropboxusercontent.com/u/45891870/experiments/stackoverflow/1.5/',     imagesdisplay:['js.jpg','pixi.jpg','gsap.jpg','js.jpg','pixi.jpg','gsap.jpg','js.jpg','pixi.jpg','gsap.jpg','js.jpg','pixi.jpg'],     rightselect:document.queryselector('.rightcarousel'),     leftselect:document.queryselector('.leftcarousel'),     imagemain:document.queryselector('.image1'),     imageleft:document.queryselector('.imageleft'),     imageright:document.queryselector('.imageright'),     imagenoneleft:document.queryselector('.imagenoneleft'),     imagenoneright:document.queryselector('.imagenoneright'),     init:function(){         imagegallery.imagesdisplay.push(imagegallery.imagesdisplay.shift());         imagegallery.imagenoneleft.setattribute('src',imagegallery.prefix+imagegallery.imagesdisplay[2]);         imagegallery.imageleft.setattribute('src',imagegallery.prefix+imagegallery.imagesdisplay[1]);         imagegallery.imagemain.setattribute('src',imagegallery.prefix+imagegallery.imagesdisplay[0]);         imagegallery.imageright.setattribute('src',imagegallery.prefix+imagegallery.imagesdisplay[10]);         imagegallery.imagenoneright.setattribute('src',imagegallery.prefix+imagegallery.imagesdisplay[9]);     },     animateimages:function(classfrom,classto){         var classmoving=$(classfrom);         var classgoingto=$(classto);         classmoving.animate({             top:classgoingto.css('top'),             left:classgoingto.css('left'),             width:classgoingto.css('width'),             opacity:classgoingto.css('opacity')         },258,function(){             $(this).removeclass(classfrom.substr(1));             $(this).addclass(classto.substr(1));             $(this).removeattr('style');         });     } }; imagegallery.init(); imagegallery.leftselect.onclick=function(){     imagegallery.animateimages('.imagenoneright','.imagenoneleft');     imagegallery.animateimages('.imageright','.imagenoneright');     imagegallery.animateimages('.image1','.imageright');     imagegallery.animateimages('.imageleft','.image1');     imagegallery.animateimages('.imagenoneleft','.imageleft'); }; imagegallery.rightselect.onclick=function(){     imagegallery.animateimages('.imagenoneleft','.imagenoneright');     imagegallery.animateimages('.imageleft','.imagenoneleft');     imagegallery.animateimages('.image1','.imageleft');     imagegallery.animateimages('.imageright','.image1');     imagegallery.animateimages('.imagenoneright','.imageright'); }; 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -