Я хочу реализовать вертикальное слайд-шоу с помощью JQuery. Я использую вертикальный барабан (div), который, в свою очередь, содержит изображения одно за другим, я уменьшаю верхнее положение барабана по размеру изображения каждые 2 секунды, что работает нормально, но когда я дойду до последнего изображения, я не могу реализовать логика запуска барабана с первых изображений. если мое объяснение неясно, я добавляю свой код:
<script type="text/javascript">
$(function() {
setInterval(SlideImage, 2000);
});
function SlideImage() {
$("#imgReel").animate({ "marginTop": "-=300px" }, 1000, function() { });
}
</script>
<style type="text/css">
img
{
width: 600px;
height: 300px;
}
.imgContainer
{
overflow: hidden;
width: 620px !important;
height: 300px !important;
}
div
{
width: 620px;
}
.current
{
z-index: 0;
}
.next
{
z-index: 1;
}
.imgReel
{
width: 620px !important;
}
.
</style>
<body>
<div id="imgContainer" class="imgContainer">
<div id="imgReel" class="imgReel">
<div class="current">
<img src="Images/Summerwave.jpg" />
</div>
<div>
<img src="Images/Sunlight_and_the_Wild_Forest_Floor.jpg" />
</div>
<div>
<img src="Images/Sunset.jpg" />
</div>
<div>
<img src="Images/Swimming_with_the_fishys.jpg" />
</div>
<div>
<img src="Images/Tearing_Apart.jpg" />
</div>
<div>
<img src="Images/Teaser.jpg" />
</div>
<div>
<img src="Images/Terra_Nova.jpg" />
</div>
</div>
</div>
Любая помощь была бы высоко оценена
2 ответа
Вы можете использовать другой подход: позвольте #imgReel
исправить и изменить размер элементов:
Перемещение imgReel вниз приведет к тому, что если вы сделаете slideUp
элементу вверху, добавив перед этим первым элементом в самом низу (после последнего элемента), вы получите эффект, что барабан движется, сначала исчезает верхняя часть текущего изображения.
В коде с помощью подключаемого модуля scrollTo:
var $reel = null;
function init() {
$reel = $("#imgReel")
// Keep the first element as first shown, now that we're going to take the reel to the bottom
$reel.children("div:first").insertAfter($reel.children("div:last"))
// Move to the bottom using scrollTo or whatever you want:
$reel.scrollTo("max")
}
function next() {
// Clone the first element (not visible) at the end
var $topElement = $reel.children("div:first")
var $bottomElement = $topElement.clone().appendTo($reel)
// Hide the top element (cloned now at the bottom) and remove it when it's done
$topElement.slideUp(1000, function() { $(this).remove() })
// Mark the next 'current'
$reel.children(".current").removeClass("current");
$bottomElement.addClass("current");
}
С другой стороны, если вы не хотите создавать бесконечный цикл и сохраняете свой подход, используйте scrollTo < / a> так просто:
funnction next() {
var $current = $reel.find("div.current").removeClass("current")
var $next = $current.next()
if(!$next.length) $next = $reel.children("div:first")
$reel.scrollTo($next.addClass("current"), 1000)
}
function prev() {
var $current = $reel.find("div.current").removeClass("current")
var $next = $current.prev()
if(!$next.length) $next = $reel.children("div:last")
$reel.scrollTo($next.addClass("current"), 1000)
})
Надеюсь, это поможет :-)
Вы можете либо вернуться в верхнюю часть барабана, либо переместить просматриваемый div
в конец барабана.
Возврат к началу, который вы могли бы сделать красивым, изменил цвет рамки до некоторого цвета, переместился в начало (пользователь этого не видит) и затемнил цвет. Таким образом, пользователь знает, что он снова смотрит на те же изображения.
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.