我想編碼一個顯示團隊所有成員的旋轉框。共有6名成員,但該框只能顯示4名成員。用下一個和上一頁箭頭訪問者應該能夠看到其他成員。如何旋轉元素並僅顯示其中的4個?
我目前的解決方案,默認情況下,所有div.member都不可見。然後在javascript中設置4個全局變量(display1-4
),併爲其分配數字(1-4
)。對於每個下一個 -click,每個顯示變量增加1,如果高於6,則再次以1開始 - 分別與prev。這部分工作。這裏是(我想作一個的jsfiddle演示頁,但它沒有工作,或者你可以看到頁面here:
// initial setting slider.js
var display1 = 0;
var display2 = 1;
var display3 = 2;
var display4 = 3;
var maxno = 6; // number of elements
function ChangeSlide(direction) {
if (direction == 'next') { // arrow right
display1 = display1 + 1;
display2 = display2 + 1;
display3 = display3 + 1;
display4 = display4 + 1;
} else { // arrow left
display1 = display1 - 1;
display2 = display2 - 1;
display3 = display3 - 1;
display4 = display4 - 1;
}
// next gets higher than maxno
if (display1 > maxno) {
display1 = display1 - maxno;
} else if (display2 > maxno) {
display2 = display2 - maxno;
} else if (display3 > maxno) {
display3 = display3 - maxno;
} else if (display4 > maxno) {
display4 = display4 - maxno;
}
// prev gets lower than 1
if (display1 < 1) {
display1 = display1 + maxno;
} else if (display2 < 1) {
display2 = display2 + maxno;
} else if (display3 < 1) {
display3 = display3 + maxno;
} else if (display4 < 1) {
display4 = display4 + maxno;
}
// Make all existing IDs invisible
document.getElementById('slide1').style.display = 'none';
document.getElementById('slide2').style.display = 'none';
document.getElementById('slide3').style.display = 'none';
document.getElementById('slide4').style.display = 'none';
document.getElementById('slide5').style.display = 'none';
document.getElementById('slide6').style.display = 'none';
// Make specified ID visible again
document.getElementById('slide' + display1).style.display = 'inline-block';
document.getElementById('slide' + display2).style.display = 'inline-block';
document.getElementById('slide' + display3).style.display = 'inline-block';
document.getElementById('slide' + display4).style.display = 'inline-block';
}
ChangeSlide('next');
.member {
display: none;
width: 100px;background: #FF0000;box-sizing: border-box;
}
<p><a onclick="ChangeSlide('prev')">PREV</a> -- <a onclick="ChangeSlide('next')">NEXT</a></p>
<div class="teambox">
<div class="member" id="slide1"><span>Member 1</span></div>
<div class="member" id="slide2"><span>Member 2</span></div>
<div class="member" id="slide3"><span>Member 3</span></div>
<div class="member" id="slide4"><span>Member 4</span></div>
<div class="member" id="slide5"><span>Member 5</span></div>
<div class="member" id="slide6"><span>Member 6</span></div>
</div>
但有一個邏輯錯誤:如果我點擊3在接下來次它應該顯示的成員順序如下:
4, 5, 6, 1
相反,它表明他們LIK E本
1, 4, 5, 6
類似的邏輯上的缺陷滑動時回發生。
我的想法是,以相應地交換子元素,一種方法是
// move first child element (team member) to the last position
var list = document.querySelector(".teambox");
list.appendChild(list.firstElementChild);
這打亂整個訂單多得多,特別是因爲我沒有一個解決方案,它做它的方式相同的另一邊。
如果沒有像jQuery這樣的重型框架,我會很高興。先謝謝你!
我的回答有幫助嗎?有什麼缺失? –
@winner_joiner目前爲止看起來非常好,謝謝!我只需要測試它是否適用於我的頁面的移動設計(如果屏幕較小,則4個「成員」會分成兩行)。我目前遠離我的工作場所,明天將進行測試和評論。 – mxmehl