2017-01-09 137 views
0

我正在更新公司主页上的滑块。原来的滑块有点老,动画不是很流畅,尤其是当用户从第一张幻灯片到最后一张时,或者相反。使用jquery的动画滑块/ javascript

我有滑块工作得很好,但似乎不能让任何动画工作。我对动画没有太多的工作,所以任何帮助都会很棒。该公司希望动画能够从右向左滑动。

var slideData = [ 
{ 
    title : "Title Slide 1", 
    timeout : 7, 
    layout : "slider-left", 
    description : "Caption Slide 1", 
    type : "image", 
    img : "/images/banners/img1.jpg", 
    url : "/url1" 
}, 
{ 
    title : "Title Slide 2", 
    timeout : 7, 
    layout : "slider-left", 
    description : "Caption Slide 2", 
    type : "image", 
    img : "/images/banners/img2.jpg", 
    url : "/url2" 
}, 
{ 
    title : "Title Slide 3", 
    timeout : 7, 
    layout : "slider-left", 
    description : "Caption Slide 3", 
    type : "image", 
    img : "/images/banners/img3.jpg", 
    url : "/url3" 
}]; 



var fSlider = (function(slideData, containerID){ 

var slides = [], slides_Data = []; 
var container = null;  // Sliding container 
var main = null;  // Main container - holds sliding container 
var currentSlide = 0;  // Current position in slide 
var offset = 770;   // X offset of container 
var timer = 0;   // Timer to auto-advance next slide. 
var width=768;   // Width of each slide  
var endSlide = false; 

//=============================== 
// initialize 
// builds and starts slider 
//=============================== 
function init(){ 
    slides_Data = slideData; 
    container = $(containerID); 
    main = $("#main-slider"); 

    buildSlides(); 
    buildControls(); 

    slides = document.getElementsByClassName("slider"); 

    setTimeOut(); 
} 

//=============================== 
// Increment and show next slide 
//=============================== 
function slideNext(){ 
    var i; 
    cancelTimeOut(); 
    //slideout(); 
    if(currentSlide >= slides.length-1){ 
     currentSlide = 0; 
     //endSlide = true; 
    }else { 
     currentSlide++; 
    } 
    for(i = 0; i < slides.length; i++) { 
     slides[i].style.display = "none"; 
    } 

    slides[currentSlide].style.display = "block"; 

    //setPositions(offset); 
    setTimeOut(); 
} 

//=============================== 
// Decrement and show previous slide 
//=============================== 
function slidePrevious(){ 
    var i; 
    cancelTimeOut(); 
    if(currentSlide <= 0){ 
     currentSlide = slides.length-1; 
     endSlide = true; 
    }else { 
     currentSlide--; 
    } 
    for(i = 0; i < slides.length; i++) { 
     slides[i].style.display = "none"; 
    } 

    slides[currentSlide].style.display = "block"; 

    //setPositions(offset); 
    setTimeOut(); 
} 

//=============================== 
// Update sliding container offset 
//=============================== 
function setPositions(offset){ 
    $("html.cssanimations " + containerID).css("transform" , "translateX(" + (-offset) + "px)"); 
    $("html.cssanimations " + containerID).css("-webkit-transform" , "translateX(" + (-offset) + "px)"); 
    $("html.cssanimations " + containerID).css("-moz-transform" , "translateX(" + (-offset) + "px)"); 
    $("html.cssanimations " + containerID).css("-ms-transform" , "translateX(" + (-offset) + "px)"); 
    $("html.cssanimations " + containerID).css("-o-transform" , "translateX(" + (-offset) + "px)"); 
    $("html.no-cssanimations " + containerID).animate({left: -offset}, 350); 
} 

//=============================== 
// Set timer for next slide 
//=============================== 
function setTimeOut(){ 
    timer=setTimeout(slideNext, slides_Data[currentSlide].timeout * 1000); 
} 

//=============================== 
// Clear timer 
//=============================== 
function cancelTimeOut(){ 
    clearTimeout(timer); 
} 

//=============================== 
// Use Slide Data to create html/css for slides 
//=============================== 
function buildSlides(){ 
    var sliderDiv = document.getElementById("slider-mask"); 

    for(var i = 0; i < slides_Data.length; i++) { 
     sliderDiv.innerHTML = sliderDiv.innerHTML + '<div class="slider ' + slides_Data[i].layout + '"' + 
     'style="background-image: url(' + slides_Data[i].img + ');">' + 
     '<div><h3><a href="' + slides_Data[i].url + '">' + slides_Data[i].title + '</a></h3>' + 
     '<p>' + slides_Data[i].description + '</p></div></div>'; 
    } 

    sliderDiv.innerHTML = sliderDiv.innerHTML + '<a id="btn-next" href="#">&#x025B8;</a>' + 
          '<a id="btn-previous" href="#">&#x025C2;</a>'; 
} 

//=============================== 
// Create and attach event listeners 
// to button/navigation controls 
//=============================== 
function buildControls(){ 

    var nextButton = document.getElementById("btn-next"); 
    var previousButton = document.getElementById("btn-previous"); 

    nextButton.addEventListener('click', slideNext); 
    previousButton.addEventListener('click', slidePrevious); 
} 

// Public 
return {init:init}; 

}(slideData, '#slider-mask')); 

这是我使用已经从原来的滑块代码修改的代码,并且动画将要使用setPositions()函数来设定。就像我说的那样,滑块工作得很好,我无法正确地获得动画。

+1

你可以给一个代码尖晶石的例子吗?包括HTML – Ishey4

回答

0

如果您正在更新,可能需要查看新的滑块,而不是尝试修复损坏的滑块。

这一个是相当不错的,但有更多的在那里工作的箱子有很多选项!

http://bxslider.com