簡體   English   中英

帶箭頭的js垂直滑塊

[英]js vertical slider with arrows

問題是我需要制作一個垂直圖像滑塊,這樣當我按下箭頭向下/向上箭頭時,每個圖像都會改變它的位置(最高的一個位於底部,前一個位於它的位置)它應該是什么樣子: 在此輸入圖像描述

到目前為止我得到了什么:

 $(function(){ var $vsliderboxes = $('#vsliderboxes'), $vslidernav = $('#vslidernav'), boxHeight = $vsliderboxes.height(), current_index = 0; function clickslide(){ clearInterval(intervalTimer); clearTimeout(timeoutTimer); timeoutTimer = setTimeout(function () { intervalTimer = window.setInterval(autoslide, 2000); }, 2500); var index = $(this).index(); current_index = index; $vsliderboxes.children().stop().animate({ top : (boxHeight * index * -1) }, 500); } function autoslide(){ current_index++; if (current_index >= $vsliderboxes.children().children().length) { current_index = 0; } $vslidernav.find('a').eq(current_index).trigger('click'); } $vslidernav.find('a').click(clickslide); var intervalTimer = window.setInterval(autoslide, 2000), timeoutTimer = null; }); 
 #vslidernav ul { list-style: none; padding: 0; } #vslidernav ul a { padding: 0; cursor: pointer; height: 50px; } #vslidernav ul a:active { color: #9C9A99; } #vslidernav ul a li { height: 50px; } #vslidernav ul .active li { } .#vslidernav ul a:active { background: transparent; color: #9C9A99; } .vslider { display: inline-block; } #vslidernav { float: left; width: 100px; z-index: 1; height: 250px; } #vsliderboxes { position : relative; overflow : hidden; } #vsliderboxes div { height: 250px; width: 900px; } #vsliderboxs-inner { position : relative; width : 900px; height : 250px; } 
 <div class="vslider"> <div id="vslidernav"> <ul> <a id="1"> <li><img src="img/arrtop.gif"></li> </a> <a id="2"> <li><img src="img/arrdown.gif"></li> </a> <a id="3"> <li></li> </a> </ul> </div> <div id="vsliderboxes"> <div id="vsliderboxs-inner"> <div id="box1" class="active"><img src="img/slide1.gif"></div> <div id="box2" class="inactive"><img src="img/slide2.gif"></div> <div id="box3" class="inactive"><img src="img/slide3.gif"></div> </div> </div> </div> 

謝謝你的建議

我認為,就像你試圖解決這個問題一樣是不可能的。 因為,當您使用“top”屬性時,您無法從頂部獲取一個圖像並將其附加到另一端,因為附加圖像會將其他圖像移動到另一個位置 - >頂部屬性將不會再說不過了。

我認為貢獻的滑塊(例如http://www.jssor.com/demos/vertical-slider.slider )可以使用轉換CSS屬性。 transform:translate3d()嘗試研究這個屬性。

Roko C. Buljan在這個頁面上回答: loop carousel jquery他使用scrollTop循環來解決你的問題。

我前段時間也寫了一個簡單的滑塊。 我現在已經實現了Roku C. Buljan方法。 隨意在Bitbucket上查看我的代碼。 https://bitbucket.org/d-stone/jqueryslider

摘錄可以幫到你:value = prev_or_next =='next'? self.globals.slide_height:0;

last = $('#container').find('> div:last');
first = $('#container').find('> div:first');

if(prev_or_next == 'prev') { // click on "next"-button
    first.before(last);      // put last element before first
    settings.elements.inner.scrollTop(self.globals.slide_height); // set the scrollTop to 1 slide-height
}
// animation itself:
$('#container').stop().animate({scrollTop: value}, {
    duration: settings.slide_speed,
    done: function() {
        if(prev_or_next == 'next') {
            // put first item after last
            last.after(first);
        }
    }
});

我建議你驗證你的HTML(W3C驗證器)。 里面有一些錯誤。 無效的HTML可能是一些CSS和Javascript錯誤的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM