0
我正在使用动态时间轴,父元素在每次点击时都推动子元素200px,问题在于,由于设计原因,在第一次点击滑块按钮后,没有机会在时间轴上仅显示4个元素,我的问题是,如何隐藏子元素在“开始”时被父项溢出,或者如何隐藏在视口上不可见的元素。当父母的溢出受到影响时隐藏div:隐藏;'
// Single timeline element
$('<div/>', {
'class': 'timeline-holder ' + value.content_type + '-element' + elementClass,
'text': 'Text Only',
'html': '<div class="circle-timeline circle-background-'+ value.override_content_type_icon +'">' +
// '<p>2005</p>' +
'<span>' + value.segment_label + '</span>' +
'<div class="timeline-block">' +
'<span>' + value.segment_label + '</span>' +
'<h2>' + value.headline + '<i class="fa fa-star ' + favoriteClass + '" aria-hidden="true"></i>' +
'<div class="bookmark ' + bookmarkClass + '">B</div>' +
'</h2>' +
blockContent +
imageBlock +
iframeElement +
readmoreButton +
downloadButton +
'</div>' +
'</div>'
}).appendTo('#timeline-slider');
我从JSON文件中读取数据,这里是JS,当用户在其上点击
function moveLeft() {
var currentMargin = parseInt(tmSlider.css('margin-left'));
// Check if animation is in progress
if (!tmSlider.hasClass('animating')) {
tmSlider.addClass('animating'); // lock slider with class
elementsToMove = timelineData.timeline.elements_to_move; // reset
var countElementsLeftToShow = totalElements - stepsPassed - 4;
sliderLastMove(countElementsLeftToShow);
stepsPassed = stepsPassed + elementsToMove;
// Move sldier
tmSlider.animate({
'marginLeft': currentMargin - sliderStep
}, 500, function() {
setTimeout(function() {
tmSlider.removeClass('animating');
}, 500);
});
}
}
function moveRight() {
var currentMargin = parseInt(tmSlider.css('margin-left'));
// Check if animation is in progress
if (!tmSlider.hasClass('animating')) {
tmSlider.addClass('animating'); // lock slider with class
elementsToMove = timelineData.timeline.elements_to_move;
sliderLastMove(stepsPassed);
stepsPassed = stepsPassed - elementsToMove;
// Move slider
tmSlider.animate({
'marginLeft': currentMargin + sliderStep
}, 500, function() {
setTimeout(function() {
tmSlider.removeClass('animating');
}, 500);
});
}
}
rightArrow.on('click', function() {
moveLeft();
prepareData();
// displayArrow()
});
leftArrow.on('click', function() {
moveRight();
// displayArrow();
});
希望这有助于之间,这是我的第一个问题在这里移动滑块,
检查实际的溢出以及它如何渲染只会使问题更加困难。你可以分享决定时间表上显示内容的逻辑吗?与检查DOM和CSS属性相比,使用数据逻辑解决此问题可能会更容易。 – Shilly
如果您只能显示4个元素,那么您是否可以跟踪元素的数量,并在超过4个元素时执行您需要执行的操作? –
4个元素总是可见的,我使用Ajax加载内容,并且所有元素都将被加载,但只有4个会在视图端口上完全可见,两个div上的一半是可见的 –