У меня есть такая структура:
<div id="cont">
<div class="entry">
<div class="t_time">16:40</div>
<div class="t_label">Some text</div>
</div>
<div class="entry">
<div class="t_time">16:40</div>
<div class="t_label">Some text</div>
</div>
<div class="entry">
<div class="t_time">16:40</div>
<div class="t_label">Some text</div>
</div>
<div class="entry">
<div class="t_time">16:40</div>
<div class="t_label">Some text</div>
</div>
... may be more "entry" divs
</div>
Я хочу прокрутить все классы entry
вверх/вниз, как шатер. Проблема в том, что все плагины jQuery, которые я нашел, не работают должным образом, они скользят весь cont
div или перемещают классы entry
но странно и нежелательно.
У вас есть хороший плагин? или какой-то код, который вы уже создали для этого?
Заранее спасибо!
Контейнер #cont
должен оставаться там, где она началась и не двигаться, только entry
DIV, которые находятся в нем. Роб предложил использовать другой div для их переноса, а затем переместить его соответствующим образом. Дело в том, что я хочу вызвать что-то вроде области выделения только тогда, когда разделители записей переполняют родительскую высоту (не проблема здесь), и я хочу, чтобы она начиналась в начале div (что означает, не будет снова покажите WHOLE div, только переполненные entry
divs), а затем покажите только последний элемент div, который скрыт, потому что они переполнены. и тогда вся анимация будет повторяться (с этой точки зрения, я хотел бы скользить весь контент div бесконечно). Знать любой плагин, который это делает?
Хорошо, вы не можете это описать, но у меня все равно будет пунт!
Возможно, вам не хватает видового экрана вокруг cont div. То есть то, что определяет размер окна, на котором вы хотите видеть.
Я бы подумал о добавлении другого div. Например
<div id="contViewport">
<div id="cont">
<div class="entry">
...
Затем вы можете установить свойства contViewport, чтобы вы видели только немного. Например
#contViewport {
height:100px;
overflow:hidden;
border: 1px solid black;
}
И затем вы можете добавить JQuery для прокрутки этого окна просмотра по строкам этого ответа:
Прокрутите вниз до Div на загрузку страницы (jQuery)
Я собрал простой пример того, что я имею в виду здесь:
marquee
поэтому он всегда будет прокручиваться автоматически
Я понятия не имею, что ты хочешь, но ты вдохновил меня на скрипку. Здесь функция, которая будет прокручивать cont div от нижней части страницы вверху:
function scrollUp(){
// Get the window height
var windowHeight = $(window).height();
// Get a handle on the container
var cont = $('#cont');
// Get the container height
var contHeight = cont.height();
// Set the container to be below the viewport
cont.css({top:windowHeight});
// Animate the container to move up over 15 seconds, then restart the animation
cont.animate({top:'-=' + (windowHeight + contHeight)}, 15000, scrollUp);
}
См. Этот рабочий jsFiddle, чтобы увидеть, как он работает, и CSS.
EDIT: см. Комментарии в этом ответе для обновленного jsFiddle. Это решение не так цельно, как мне бы хотелось, и там много циклов, но он должен сделать трюк!
function scrollUp(){
// Get a handle on the container
var cont = $('#cont');
// Get the container height
var contHeight = cont.height();
// Get a handle on the child elements
var entries = cont.find('.entry');
// Records the heights of each entry div
var heights = [];
var i = 0;
for(; i < entries.length; i++){
heights.push($(entries[i]).outerHeight());
}
// Calculate the total height of all the entries
var totalHeight = 0;
for(i = 0; i < heights.length; i++){
totalHeight += heights[i];
}
// If it doesnt fit, scroll!
if(totalHeight > contHeight){
// Change css so that entries will scroll
entries.css('position','absolute');
// Set the entries to be below the viewport based on height of elements above
for(i = 0; i < entries.length; i++){
var previousEntryHeights = 0;
for(var j = 0; j < i; j++){
previousEntryHeights += heights[j];
}
$(entries[i]).css({top:(contHeight + previousEntryHeights)});
}
// Set the entries to scroll up based on height of elements below
for(i = 0; i < entries.length; i++){
var nextEntryHeights = 0;
for(var j = i; j < entries.length; j++){
nextEntryHeights += heights[j];
}
$(entries[i]).animate({top:-nextEntryHeights}, 15000, scrollUp);
}
}
}
// Set the marquee in motion
scrollUp();
#cont
должен оставаться там , где она началась и не двигаться, только entry
DIV - х , которые находятся в нем. Роб предложил использовать другой div, чтобы обернуть их, а затем переместить его соответствующим образом. Дело в том, что я хочу вызывать что-то вроде выделения, только когда entry
div превышают рост своего родителя. и я хочу, чтобы он начинал в начале, а затем только раскрывал последние entry
div, которые скрыты, потому что они переполнены. и тогда вся анимация повторится. Знаете какой-нибудь плагин, который это делает?