2014-11-21 206 views
0

我是新來的Javascript,我想使用JS只做簡單的滑塊(沒有jQuery或其他插件)。純Javascript滑塊

enter image description here

正如你看到的,我有一個紅色的框出現,這下有2個boxs(綠色和藍色)。我想要的是使用next和prev按鈕在它們之間導航。代碼應該是動態的,所以如果我添加更多的框,它應該沒有任何更新的代碼工作。

請檢查this小提琴。

<div class="content"> 
     <div class="boxes"> 
      <div class="box-item red"></div> 
      <div class="box-item blue"></div> 
      <div class="box-item green"></div> 
     </div> 

     <a href="#" class="next">next</a> 
     <a href="#" class="prev">prev</a> 
    </div> 

什麼,我想的是: 1計算已在類名「框中項」元素的數量。 2-選擇元素並編輯它的CSS「改造」翻譯(X,Y)」。 3-然後下一個元素將被顯示。

var numItems = document.querySelectorAll('.box-item').length; 

上面JS代碼計數元件的數量,我想要的東西,幫我明年上一個按鈕控制boxs。任何想法做呢?

感謝,

+0

看出來的JavaScript的setInterval和clearInterval相結合的方法選擇。 – 2014-11-21 18:41:51

+0

@AkshayKhandelwal我檢查了這個解決方案,我想用next和prev按鈕來控制它。 – shadeed9 2014-11-21 18:44:03

+1

那麼到目前爲止你所做的是什麼都沒有?如果你打算要求某人爲你完成整個事情,那麼與查看滑塊庫的源代碼沒有什麼不同。 – JJJ 2014-11-21 18:45:08

回答

0

我會使用面向對象的方法來解決這個問題。您可以創建具有相關功能和屬性的滑塊對象...

HTML元素具有屬性(例如:class,id,value,style ..)。爲此,我使用了一個名爲translateVal的自定義屬性來表示框的元素。該屬性可以跟蹤元素的css translate()的當前x值。

Slider = { 
 
\t current : 0, 
 
\t boxes : document.getElementsByClassName("box-item"), 
 
\t boxWidth: 0, 
 
\t init : function(boxWidth){ 
 
\t \t Slider.boxWidth = boxWidth; 
 
\t \t Slider.boxes[0].style.transform = "translate(0px, 0)"; 
 
\t \t Slider.boxes[0].translateVal = 0; 
 
\t \t for (var i=1; i<Slider.boxes.length; i++) { 
 
\t \t \t Slider.boxes[i].style.transform = "translate("+(boxWidth)+"px, 0)"; 
 
\t \t \t Slider.boxes[i].translateVal = boxWidth; 
 
\t \t } 
 
\t }, 
 
\t move : function(direction){ 
 
\t \t if (direction == "left" && Slider.current > 0){ 
 
\t \t \t Slider.current--; 
 
\t \t } else if (direction == "right" && Slider.current < Slider.boxes.length-1){ 
 
\t \t \t Slider.current++; 
 
\t \t } 
 
\t \t for (var i=0; i<Slider.boxes.length; i++) { 
 
\t \t \t var translateVal = Slider.boxWidth; 
 
\t \t \t if (i == Slider.current){ 
 
\t \t \t \t translateVal = 0; 
 
\t \t \t } 
 
\t \t \t Slider.boxes[i].style.transform = "translate("+(translateVal)+"px, 0)"; 
 
\t \t \t Slider.boxes[i].translateVal = translateVal; 
 
\t \t } 
 
\t } 
 
} 
 
\t \t 
 
window.onload = function(){Slider.init(350)};
.content { 
 
    width: 700px; 
 
    height: 500px; 
 
    margin: 120px auto 0 auto; 
 
} 
 
.content .boxes { 
 
    width: 350px; 
 
    height: 150px; 
 
    background: #666666; 
 
    position: relative; 
 
    margin: 0 auto; 
 
    overflow: hidden; 
 
} 
 
.content .boxes .box-item { 
 
    position: absolute; 
 
    width: 350px; 
 
    height: 150px; 
 
    right: 0; 
 
    bottom: 0; 
 
    left: 0; 
 
    top: 0; 
 
} 
 
.content .boxes .red { 
 
    background: red; 
 
} 
 
.content .boxes .blue { 
 
    background: blue; 
 
} 
 
.content .boxes .green { 
 
    background: green; 
 
} 
 
.content .next { 
 
    float: right; 
 
} 
 
.content .prev { 
 
    float: left; 
 
}
<body> 
 
<div class="content"> 
 
\t <div class="boxes"> 
 
\t \t <div class="box-item red" translateVal=""></div> 
 
\t \t <div class="box-item blue" translateVal=""></div> 
 
\t \t <div class="box-item green" translateVal=""></div> 
 
\t </div> 
 
\t <a href="#" class="next" onclick="Slider.move('right')">next</a> 
 
\t <a href="#" class="prev" onclick="Slider.move('left')">prev</a> 
 
</div> 
 
</body>

1

我建議你使用CSS3和JavaScript只是添加刪除類。

所以,你必須轉變和動物您可以通過javasript激活它們。

以這種方式沒有插件和快速幻燈片。

如果CSS3的硬件加速並不能說​​服你,我建議你用jQuery包裝它,不需要爲這樣的任務使用vanilla js。

// -------- --------編輯//

我的意思是,與香草的JavaScript我猜的方式得到動畫是通過setIntervals,並增加3個內聯幻燈片容器的左側。也許是一個評論,但正如我所說的是不願意經歷這種痛苦,我的回答只是指出,如果你有CSS3,就不需要插件或庫。

我注意到CSS3的答案是,這就是我提到的原因。

相關的代碼將

document.getElementById('myId').setAttribute("class", "firstSlide"); 

然後單擊並

document.getElementById('myId').setAttribute("class", "secondSlide"); 

document.getElementById('myId').setAttribute("class", "thirdSlide"); 

#myId { 
    transtion: all 1s ease; 
} 
#myId.firstSlide { 
    .translateX(0) // using mixin for the sake off the example 
} 
#myId.secondSlide { 
    .translateX(100%) // i mean the css translate, dont make me put all the prefixes 
} 
#myId.thirdSlide { 
    .translateX(200%) 
} 

當然你也可以在此之後做出的JavaScript函數計算的幻燈片>設置移動容器的寬度爲n * 100 +'%',並隨着向前或向後添加而移動每次休息100%至容器平移X,容器應容器在100%大小與溢出隱藏

// ----- -----編輯//

自動化它可以使一個計算幻燈片的函數,向容器添加正確的寬度100 * slides.length,並將索引* 100 + 100轉換爲xtranslation,就像那樣,有很多方法來自動完成這些任務,這只是一個例子來解釋CSS設置,所以基本上你聲明一般的CSS規則和一組幻燈片的具體細節,你添加樣式js

+4

這更像是帶有建議而不是實際答案的評論。?或者你能否用相關的vanilla js代碼來澄清你的答案? (沒有jquery)作者提到的作者? – 2014-11-21 18:50:59

+0

@MaunoV。好吧,它解釋了我自己多一點 – 2014-11-21 19:04:44

+0

我應該手動添加到CSS每個新的幻燈片,我想補充?還是有更常見的解決方案? – 2014-11-21 19:14:30

1

var helpers = {}; 
 
     helpers.once = function (fn, context) { 
 
      var result; 
 
      return function() { 
 
       if(fn) { 
 
        result = fn.apply(context || this, arguments); 
 
        fn = null; 
 
       } 
 
       return result; 
 
      }; 
 
     }; 
 
     helpers.isset = function() { 
 
      var a = arguments, l = a.length, i = 0, undef; 
 
      if (l === 0) { 
 
       throw new Error('Empty isset'); 
 
      } 
 
      while (i !== l) { 
 
       if (a[i] === undef || a[i] === null) { 
 
        return false; 
 
       } 
 
       i++; 
 
      } 
 
      return true; 
 
     }; 
 
     helpers.empty = function (mixed_var) { 
 
      var undef, key, i, len; 
 
      var emptyValues = [undef, null, false, 0, '', '0']; 
 
      for (i = 0, len = emptyValues.length; i < len; i++) { 
 
       if (mixed_var === emptyValues[i]) { 
 
        return true; 
 
       } 
 
      } 
 
      if (typeof mixed_var === 'object') { 
 
       for (key in mixed_var) { 
 
        return false; 
 
       } 
 
       return true; 
 
      } 
 
      return false; 
 
     }; 
 
     helpers.returnStyle = function (el, styleProp) { 
 
      var x = undefined; 
 
      if (this.isset(el.currentStyle)) { 
 
       x = el.currentStyle[styleProp]; 
 
      } else if (this.isset(window.getComputedStyle)) { 
 
       x = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp); 
 
      } 
 
      if(this.empty(x)) { 
 
       x = '0px'; 
 
      } 
 
      return x; 
 
     }; 
 
     helpers.resetSliders = function (sliders) { 
 
      for (var i = 0; i < sliders.length; i++) { 
 
       sliders[i].resetSlider(); 
 
      } 
 
     }; 
 
     
 
     // int - id to apply, 
 
     // loop - loop or not, 
 
     // sliderIntervalTime - milisecconds between loops, 
 
     // divsNumberShow - number of divs inside container, 
 
     // infiniteLoops - loop infinitely or not 
 
     var jsSlider = function(id, loop, sliderIntervalTime, divsNumberShow, infiniteLoops) { 
 
      var self = this; 
 
      this.container = undefined; 
 
      this.containerMarginRight = 0; 
 
      this.containerMarginLeft = 0; 
 
      this.containerPaddingRight = 0; 
 
      this.containerPaddingLeft = 0; 
 
      this.containerBorderLeftWidth = 0; 
 
      this.containerBorderRightWidth = 0; 
 
      this.sliderInterval = undefined; 
 
      this.tr = undefined; 
 
      this.divs = undefined; 
 
      this.numCallsInteval = 0; 
 
      this.infiniteLoops = 0; 
 
      this.loop = 0; 
 
      this.containerWidth = 0; 
 
      this.containerInner = 0; 
 
      this.sliderIntervalTime = 4000; 
 
      this.deviation = 0; 
 
      this.divsNumberShow = 1; 
 
      this.divsMarginRight = 0; 
 
      this.divsMarginLeft = 0; 
 
      this.divsPaddingRight = 0; 
 
      this.divsPaddingLeft = 0; 
 
      this.divsBorderLeftWidth = 0; 
 
      this.divsBorderRightWidth = 0; 
 
      this.pager = undefined; 
 
      this.pagerCounter = 0; 
 
      this.hideNext = function() { 
 
       self.showNextPrev(); 
 
       var ctrlSelectors = self.container.getElementsByClassName("ctrl-selector"); 
 
       ctrlSelectors[1].style.display = 'none'; 
 
      }; 
 
      this.hidePrev = function() { 
 
       self.showNextPrev(); 
 
       var ctrlSelectors = self.container.getElementsByClassName("ctrl-selector"); 
 
       ctrlSelectors[0].style.display = 'none'; 
 
      }; 
 
      this.showNextPrev = function() { 
 
       var ctrlSelectors = self.container.getElementsByClassName("ctrl-selector"); 
 
       for (var i = 0; i < ctrlSelectors.length; i++) { 
 
        ctrlSelectors[i].style.display = 'block'; 
 
       } 
 
      }; 
 
      this.showHideNextPrev = function() { 
 
       var currentPagerLength = ((Math.ceil(self.divs.length/self.divsNumberShow)) - 1); 
 
       if(!self.loop && (self.pagerCounter === currentPagerLength)) { 
 
        self.hideNext(); 
 
       } else if(!self.loop && self.pagerCounter === 0) { 
 
        self.hidePrev(); 
 
       } else { 
 
        self.showNextPrev(); 
 
       } 
 
      }; 
 
      this.pagerReset = function() { 
 
       var pagerElements = self.pager.getElementsByClassName("pager-element"); 
 
       for (var i = 0; i < pagerElements.length; i++) { 
 
        if(pagerElements[i].className === 'pager-element activated') { 
 
         pagerElements[i].className = 'pager-element'; 
 
         break; 
 
        } 
 
       } 
 
       pagerElements[0].className += ' activated'; 
 
      }; 
 
      this.pagerMove = function() { 
 
       var pagerElements = self.pager.getElementsByClassName("pager-element"); 
 
       var activatedElement = 0; 
 
       for (var i = 0; i < pagerElements.length; i++) { 
 
        if(pagerElements[i].className === 'pager-element activated') { 
 
         pagerElements[i].className = 'pager-element'; 
 
         activatedElement = self.pagerCounter; 
 
        } 
 
       } 
 
       var activatedCounter = activatedElement < 0 ? pagerElements.length - 1 : activatedElement % pagerElements.length; 
 
       pagerElements[activatedCounter].className = 'pager-element activated'; 
 
      }; 
 
      this.showPagerSlide = function (counter) { 
 
       var currentPagerLength = ((Math.ceil(self.divs.length/self.divsNumberShow)) - 1); 
 
       self.pagerCounter = (counter < 0 ? currentPagerLength : (counter > currentPagerLength ? 0 : counter)); 
 
       self.showHideNextPrev(); 
 
       for (var i = 0; i < self.divs.length; i++) { 
 
        if(self.loop && self.pagerCounter === 0) { 
 
         self.divs[i].style.right = '0px'; 
 
        } else if(self.loop && self.pagerCounter === (self.divs.length - 1)) { 
 
         self.divs[i].style.right = (currentPagerLength * (self.containerInner)) + 'px'; 
 
        } else { 
 
         self.divs[i].style.right = (self.pagerCounter * self.containerInner) + 'px'; 
 
        } 
 
       } 
 
       self.pagerMove(); 
 
      }; 
 
      this.showPagerSlideStopInterval = function (counter) { 
 
       self.showPagerSlide(counter); 
 
       self.stopSlider(); 
 
      }; 
 
      this.showNextSlide = function() { 
 
       self.pagerCounter++; 
 
       self.showPagerSlide(self.pagerCounter); 
 
      }; 
 
      this.showNextSlideStopInterval = function() { 
 
       self.showNextSlide(); 
 
       self.stopSlider(); 
 
      }; 
 
      this.showPrevSlide = function() { 
 
       self.pagerCounter--; 
 
       self.showPagerSlide(self.pagerCounter); 
 
      }; 
 
      this.showPrevSlideStopInterval = function() { 
 
       self.showPrevSlide(); 
 
       self.stopSlider(); 
 
      }; 
 
      this.stopSlider = helpers.once(function() { 
 
       clearInterval(self.sliderInterval); 
 
      }); 
 
      this.startSlider = function() { 
 
       if(self.numCallsInteval > 0) { 
 
        self.showNextSlide(); 
 
       } 
 
       else { 
 
        self.stopSlider(); 
 
       } 
 
       if(!self.infiniteLoops) { 
 
        self.numCallsInteval--; 
 
       } 
 
      }; 
 
      this.resetSlider = function() { 
 
       if(self.loop) { 
 
        self.stopSlider(); 
 
       } else { 
 
        self.hidePrev(); 
 
       } 
 
       self.recalcConainer(); 
 
       self.recalcDeviation(); 
 
       for (var i = 0; i < self.divs.length; i++) { 
 
        self.divs[i].style.width = ((self.containerInner - self.deviation)/self.divsNumberShow) + 'px'; 
 
        self.divs[i].style.right = '0px'; 
 
       } 
 
       self.pagerReset(); 
 
      }; 
 
      this.recalcConainer = function() { 
 
       self.containerMarginRight = helpers.returnStyle(self.container, 'margin-right'); 
 
       self.containerMarginLeft = helpers.returnStyle(self.container, 'margin-left'); 
 
       self.containerPaddingRight = helpers.returnStyle(self.container, 'padding-right'); 
 
       self.containerPaddingLeft = helpers.returnStyle(self.container, 'padding-left'); 
 
       self.containerBorderLeftWidth = helpers.returnStyle(self.container, 'border-left-width'); 
 
       self.containerBorderRightWidth = helpers.returnStyle(self.container, 'border-right-width'); 
 
       self.containerWidth = self.container.offsetWidth; 
 
       
 
       self.containerInner = 
 
        self.containerWidth 
 
        - parseInt(self.containerPaddingRight) 
 
        - parseInt(self.containerPaddingLeft) 
 
        - parseInt(self.containerBorderLeftWidth) 
 
        - parseInt(self.containerBorderRightWidth); 
 
      }; 
 
      this.recalcDeviation = function() { 
 
       self.deviation = 
 
        (parseInt(self.divsMarginRight) 
 
        + parseInt(self.divsMarginLeft) 
 
        + parseInt(self.divsPaddingRight) 
 
        + parseInt(self.divsPaddingLeft) 
 
        + parseInt(self.divsBorderLeftWidth) 
 
        + parseInt(self.divsBorderRightWidth)) * self.divsNumberShow; 
 
      }; 
 
      this.createSlider = function (id, loop, sliderIntervalTime, divsNumberShow, infiniteLoops) { 
 
       if(helpers.isset(id)) { 
 
        self.loop = helpers.isset(loop) ? loop : 1; 
 
        self.sliderIntervalTime = helpers.isset(sliderIntervalTime) ? sliderIntervalTime : 4000; 
 
        self.divsNumberShow = helpers.isset(divsNumberShow) ? divsNumberShow : 1; 
 
        self.container = document.getElementById(id); 
 
        var ctrlSelectorNext = document.createElement('span'); 
 
        ctrlSelectorNext.id = 'next'; 
 
        ctrlSelectorNext.className = 'ctrl-selector'; 
 
        ctrlSelectorNext.innerHTML = '&nbsp;'; 
 
        ctrlSelectorNext.onclick = self.showNextSlideStopInterval; 
 
        self.container.appendChild(ctrlSelectorNext); 
 
        var ctrlSelectorPrev = document.createElement('span'); 
 
        ctrlSelectorPrev.id = 'prev'; 
 
        ctrlSelectorPrev.className = 'ctrl-selector'; 
 
        ctrlSelectorPrev.innerHTML = '&nbsp;'; 
 
        ctrlSelectorPrev.onclick = self.showPrevSlideStopInterval; 
 
        self.container.insertBefore(ctrlSelectorPrev ,self.container.firstChild); 
 
        self.pager = document.createElement('div'); 
 
        self.pager.className = 'pager'; 
 
        self.container.appendChild(self.pager); 
 
        self.divs = self.container.getElementsByClassName("element"); 
 
        self.divsMarginRight = helpers.returnStyle(self.divs[0], 'margin-right'); 
 
        self.divsMarginLeft = helpers.returnStyle(self.divs[0], 'margin-left'); 
 
        self.divsPaddingRight = helpers.returnStyle(self.divs[0], 'padding-right'); 
 
        self.divsPaddingLeft = helpers.returnStyle(self.divs[0], 'padding-left'); 
 
        self.divsBorderLeftWidth = helpers.returnStyle(self.divs[0], 'border-left-width'); 
 
        self.divsBorderRightWidth = helpers.returnStyle(self.divs[0], 'border-right-width'); 
 
        self.infiniteLoops = helpers.isset(infiniteLoops) ? infiniteLoops : 0; 
 
        self.recalcConainer(); 
 
        self.recalcDeviation(); 
 
        for (var i = 0; i < self.divs.length; i++) { 
 
         self.divs[i].style.width = ((self.containerInner - self.deviation)/self.divsNumberShow) + 'px'; 
 
        } 
 
        for (var i = 0; i < Math.ceil(self.divs.length/self.divsNumberShow); i++) { 
 
         var pagerElement = document.createElement('span'); 
 
         pagerElement.className = 'pager-element'; 
 
         pagerElement.innerHTML = i + 1; 
 
         if (typeof window.addEventListener === 'function'){ 
 
          (function (_i) { 
 
           pagerElement.addEventListener('click', function(){ 
 
            self.showPagerSlideStopInterval(_i); 
 
           }); 
 
          })(i); 
 
         } 
 
         self.pager.appendChild(pagerElement); 
 
        } 
 
        self.numCallsInteval = Math.ceil(self.divs.length/self.divsNumberShow) - 1; 
 
        if(self.loop) { 
 
         self.sliderInterval = setInterval(function() { 
 
          self.startSlider(); 
 
         }, self.sliderIntervalTime); 
 
        } else { 
 
         self.hidePrev(); 
 
        } 
 
        self.pagerReset(); 
 
       } 
 
      }; 
 
      this.createSlider(id, loop, sliderIntervalTime, divsNumberShow, infiniteLoops); 
 
     }; 
 
     
 
     var sliders = []; 
 
     var resizing; 
 
     
 
     document.addEventListener('DOMContentLoaded', function() { 
 
      sliders.push(new jsSlider("sa1", 1, 4000, 1, 0)); 
 
      sliders.push(new jsSlider("sa2", 1, 4000, 2, 1)); 
 
      sliders.push(new jsSlider("sa3", 1, 4000, 3, 0)); 
 
      sliders.push(new jsSlider("sm1", 0, 4000, 1)); 
 
      sliders.push(new jsSlider("sm2", 0, 4000, 2)); 
 
      sliders.push(new jsSlider("sm3", 0, 4000, 3)); 
 
     }, false); 
 
     
 
     window.addEventListener('resize', function() { 
 
      clearTimeout(resizing); 
 
      resizing = setTimeout(function() { 
 
       helpers.resetSliders(sliders);}, 100); 
 
     }, false);
img { 
 
\t vertical-align: middle; 
 
\t text-align: center 
 
} 
 
.quantum-slider { 
 
\t border:solid #aaa; 
 
\t border-width:1px; 
 
\t border-radius:5px; 
 
\t width:auto; 
 
\t margin:14px 10px; 
 
\t color:#555; 
 
\t font-size:1em; 
 
\t display: block; 
 
\t overflow: hidden; 
 
\t position: relative; 
 
\t white-space: nowrap; 
 
\t padding: 24px 10px; 
 
} 
 
.quantum-slider .element { 
 
\t position:relative; 
 
\t display: inline-block; 
 
\t -webkit-transition:all 0.5s ease-in-out; 
 
\t -moz-transition:all 0.5s ease-in-out; 
 
\t -o-transition:all 0.5s ease-in-out; 
 
\t -ms-transition:all 0.5s ease-in-out; 
 
\t transition:all 0.5s ease-in-out 0s; 
 
\t margin: 0 24px; 
 
\t padding: 0 5px; 
 
\t right:0; 
 
\t width: auto; 
 
\t white-space: normal; 
 
\t text-align: center; 
 
\t vertical-align: middle; 
 
} 
 
.quantum-slider .lena { 
 
\t border: 1px solid #aaa; 
 
\t padding: 10px 0; 
 
} 
 
.quantum-slider span { 
 
\t cursor:pointer; 
 
\t height:100%; 
 
\t position:absolute; 
 
\t width:24px; 
 
\t margin: 0; 
 
\t padding: 0; 
 
\t background-color:#eee; 
 
} 
 
.quantum-slider span:hover { 
 
\t background-color:#ddd; 
 
} 
 
.quantum-slider span:active { 
 
\t background-color:#ccc; 
 
} 
 
.quantum-slider span#prev { 
 
\t background-image:url("http://www.ciaomondo.it/code/quanton-pure-js-slider/arrow-left.png"); 
 
\t background-position:50% 50%; 
 
\t background-repeat:no-repeat; 
 
\t background-size:24px auto; 
 
\t left:0; 
 
\t top:0; 
 
\t z-index:101; 
 
} 
 
.quantum-slider span#next { 
 
\t background-image:url("http://www.ciaomondo.it/code/quanton-pure-js-slider/arrow-right.png"); 
 
\t background-position:50% 50%; 
 
\t background-repeat:no-repeat; 
 
\t background-size:24px auto; 
 
\t right:0; 
 
\t top:0; 
 
\t z-index:101; 
 
} 
 

 
.pager { 
 
\t position: relative; 
 
\t width: 100%; 
 
\t display: block; 
 
\t height: auto; 
 
\t text-align: center; 
 
\t margin: 10px 0 -10px 0; 
 
\t padding: 0; 
 
} 
 

 
.pager span { 
 
\t width: 1em; 
 
\t position: relative; 
 
\t display: inline-block; 
 
\t text-align: center; 
 
\t margin: 0 1em; 
 
\t padding: 0.2em; 
 
\t border-radius: 25%; 
 
} 
 

 
.pager span.activated{ 
 
\t background-color:#ddd; 
 
\t cursor:default; 
 
}
<h1>Javascript pure div slider (No jQuery)</h1> 
 
<p> 
 
\t You can apply every style you want to the slider container and the slider can contain only divs.<br> 
 
\t You must apply to all the element divs inside the slider the same style for the slider to work correctly.<br> 
 
\t The elements divs inside the slider will adapt based on the style you apply.<br> 
 
\t If something visual is wrong with the slider when you put it inside the html pages written by you, verify if there are conflicts between the slider styles and your styles. 
 
</p> 
 
<h2>Slider with auto scrolling</h2> 
 
<h3>Slider with only 1 visible div, scrolls till last div</h3> 
 
<div id="sa1" class="quantum-slider"><!-- 
 
\t --><div class="element">1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare lacinia ligula vel vehicula. Phasellus.</div><!-- 
 
\t --><div class="element">2. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!--               
 
\t --><div class="element">3. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tempor suscipit enim, eu bibendum leo. Praesent sit amet lectus vitae dolor ornare dictum. Pellentesque accumsan, urna in facilisis tincidunt, felis diam euismod augue, ac mollis tortor nibh quis diam. Duis semper tincidunt aliquam. Nam malesuada.</div><!-- 
 
\t --><div class="element">4. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tempor suscipit enim, eu bibendum leo. Praesent sit amet lectus vitae dolor ornare dictum. Pellentesque accumsan, urna in facilisis tincidunt, felis diam euismod augue, ac mollis tortor nibh quis diam. Duis semper tincidunt aliquam. Nam malesuada.</div><!-- 
 
\t --><div class="element">5. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">6. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!-- 
 
--></div> 
 
<h3>Slider with 2 visible divs, scrolls infinitely</h3> 
 
<div id="sa2" class="quantum-slider"><!-- 
 
\t --><div class="element lena">1. <img src="http://www.ciaomondo.it/code/quanton-pure-js-slider/adele.jpg" width="150" height="150"/></div><!-- 
 
\t --><div class="element lena">2. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!--               
 
\t --><div class="element lena">3. <img src="http://www.ciaomondo.it/code/quanton-pure-js-slider/adele.jpg" width="150" height="150"/></div><!-- 
 
\t --><div class="element lena">4. <img src="http://www.ciaomondo.it/code/quanton-pure-js-slider/adele.jpg" width="150" height="150"/></div><!-- 
 
\t --><div class="element lena">5. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
--></div> 
 
<h3>Slider with 3 visible divs, scrolls till last div</h3> 
 
<div id="sa3" class="quantum-slider"><!-- 
 
\t --><div class="element">1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare lacinia ligula vel vehicula. Phasellus.</div><!-- 
 
\t --><div class="element">2. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!--               
 
\t --><div class="element">3. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">4. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tempor suscipit enim, eu bibendum leo. Praesent sit amet lectus vitae dolor ornare dictum. Pellentesque accumsan, urna in facilisis tincidunt, felis diam euismod augue, ac mollis tortor nibh quis diam. Duis semper tincidunt aliquam. Nam malesuada.</div><!-- 
 
\t --><div class="element">5. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">6. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!-- 
 
\t --><div class="element">7. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
--></div> 
 
<h2>Slider with manual scrolling</h2> 
 
<h3>Slider with only 1 visible div</h3> 
 
<div id="sm1" class="quantum-slider"><!-- 
 
\t --><div class="element">1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare lacinia ligula vel vehicula. Phasellus.</div><!-- 
 
\t --><div class="element">2. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!--               
 
\t --><div class="element">3. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">4. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tempor suscipit enim, eu bibendum leo. Praesent sit amet lectus vitae dolor ornare dictum. Pellentesque accumsan, urna in facilisis tincidunt, felis diam euismod augue, ac mollis tortor nibh quis diam. Duis semper tincidunt aliquam. Nam malesuada.</div><!-- 
 
\t --><div class="element">5. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">6. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!-- 
 
--></div> 
 
<h3>Slider with 2 visible divs</h3> 
 
<div id="sm2" class="quantum-slider"><!-- 
 
\t --><div class="element">1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare lacinia ligula vel vehicula. Phasellus.</div><!-- 
 
\t --><div class="element">2. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!--               
 
\t --><div class="element">3. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">4. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tempor suscipit enim, eu bibendum leo. Praesent sit amet lectus vitae dolor ornare dictum. Pellentesque accumsan, urna in facilisis tincidunt, felis diam euismod augue, ac mollis tortor nibh quis diam. Duis semper tincidunt aliquam. Nam malesuada.</div><!-- 
 
\t --><div class="element">5. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
--></div> 
 
<h3>Slider with 3 visible div</h3> 
 
<div id="sm3" class="quantum-slider"><!-- 
 
\t --><div class="element">1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare lacinia ligula vel vehicula. Phasellus.</div><!-- 
 
\t --><div class="element">2. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!--               
 
\t --><div class="element">3. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">4. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tempor suscipit enim, eu bibendum leo. Praesent sit amet lectus vitae dolor ornare dictum. Pellentesque accumsan, urna in facilisis tincidunt, felis diam euismod augue, ac mollis tortor nibh quis diam. Duis semper tincidunt aliquam. Nam malesuada.</div><!-- 
 
\t --><div class="element">5. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer facilisis id velit sed accumsan. Mauris sodales eros nec justo semper sagittis. Praesent nisl mauris, lacinia ac laoreet quis, posuere sed enim. Vestibulum quis congue nisl.</div><!-- 
 
\t --><div class="element">6. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!-- 
 
\t --><div class="element">7. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel blandit nisi. Sed id magna mattis dolor convallis vulputate. Aenean justo leo, laoreet id est.</div><!-- 
 
--></div>

在這裏你可以找到一個非常定製純JavaScript的div滑塊。

https://github.com/quanton81/quanton-pure-js-slider

該腳本有很多的選擇。

  1. 它適用於divs。
  2. 它可以用於你想要的所有div。
  3. 它可以設置n-divs的初始可見性,其他可滾動。
  4. divs可以自動或手動滾動。
  5. divs可以滾動到最後一個div,然後停止或無限滾動。
  6. 有可能在同一個頁面上的多個滑塊,每滑