javascript - 我通过 JQuery 单击显示了一堆图像 - 有什么简单的方法可以制作动画吗?

标签 javascript jquery html jquery-animate

这是我正在使用的(非常简单的)JS 代码:

    $(document).ready(function() {
        $(".button-list .next").click(function() {
            project = $(this).parents().filter(".projektweb").eq(0);
            currentimg = project.find(".images-list li.current");
            nextimg = currentimg.next();
            firstimg = project.find(".images-list li:first");
            currentimg.removeClass("current");
            if (nextimg.is("li")) nextimg.addClass("current");
            else firstimg.addClass("current");
            return false;
        });
        $(".button-list .prev").click(function() {
            project = $(this).parents().filter(".projektweb").eq(0);
            currentimg = project.find(".images-list li.current");
            previmg = currentimg.prev();
            lastimg = project.find(".images-list li:last");
            currentimg.removeClass("current");
            if (previmg.is("li")) previmg.addClass("current");
            else lastimg.addClass("current");
            return false;
        });
    });

图像列表的 HTML 代码如下所示:

<ul class="images-list">
    <li class="current"><img src="img/1.jpg" alt="" /></li>
    <li><img src="img/1b.jpg" alt="" /></li>
</ul>

<ul class="button-list"> <li><a class="button prev" href="#">←</a></li> 
<li><a class="button next" href="#">→</a></li></ul>

CSS:

.images-list {
    height: 460px;
    list-style-type:none;
    float:left;
    width: 460px;
    overflow:hidden;
    position:relative;
}

.images-list img {
    height: 460px;
    width: 460px;
    display:block;
}

 .images-list li {
    display:none;
}

.images-list li.current {
    display:block;
}

我想做的是在图像来来去去时为它们制作动画 - 现在它们刚刚出现,这没问题,但再多一点养眼效果就更好了。

有人可以帮我吗?甚至可以这样做吗?谢谢!!

最佳答案

我做了 a demo为你。基本上我使用 jQuery 的 animate() 添加了一些左右滚动动画。

您可以在任何方向为图像设置动画,但如果您想要更花哨,那么我会按照 Matt 的建议使用 Cycle 插件。

额外的 CSS

.images-list li.animating {
 position: absolute;
 top: 0;
 left: 0;
 display: block;
}

脚本

$(document).ready(function() {

 // *** Constants ***
 var project = $('.projektweb');
     animationTime = 500,  // scroll time in milliseconds
     animationWidth = 480; // image width = 460 + 20px padding between images
     leftPadding = parseInt( project.find('ul').css('padding-left'), 10); // padding due to UL

 // *** Next image ***
 $('.button-list .next').click(function() {
  currentimg = project.find('li.current');
  nextimg = (currentimg.next().is('li')) ? currentimg.next() : project.find('.images-list li:first');

  currentimg
   .removeClass('current')
   .addClass('animating')
   .css('left', leftPadding)
   .animate({
    left: '-=' + animationWidth 
   }, animationTime, function(){
    $(this).removeClass('animating');
   });

  nextimg
   .addClass('animating')
   .css('left', (animationWidth + leftPadding) + 'px')
   .animate({
    left: 0 + leftPadding
   }, animationTime, function(){
    $(this).removeClass('animating').addClass('current');
   })

  return false;
 });

 // *** Prev image ***
 $('.button-list .prev').click(function() {
  currentimg = project.find('.images-list li.current');
  previmg = (currentimg.prev().is("li")) ? currentimg.prev() : project.find('.images-list li:last');

  currentimg
   .addClass('animating')
   .css('left', leftPadding)
   .removeClass("current")
   .animate({
    left: '+=' + animationWidth
   }, animationTime, function(){
    $(this).removeClass('animating');
   });

  previmg
   .addClass('animating')
   .css('left',  '-' + (animationWidth) + 'px')
   .animate({
    left: '+=' + (animationWidth + leftPadding)
   }, animationTime, function(){
    $(this).removeClass('animating').addClass('current');
   })

  return false;
 });

});

关于javascript - 我通过 JQuery 单击显示了一堆图像 - 有什么简单的方法可以制作动画吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2788346/

相关文章:

javascript - 生成元素和关联 $.data() 的更有效方法? [jQuery]

python - 匹配结束 HTML 标签的正则表达式

javascript - 使用 JavaScript 将样式表附加到 html 文档的头部

javascript - 为什么这个回调会被多次触发?

javascript - 如何检查多维数组中的变量是否为真?

javascript - JQuery 对话框绑定(bind)事件到按钮

html - 在一行中实现显示卡

javascript - 使用动态预标记阻止 XSS

javascript - 如何在 CheckboxList selectedIndexChange 上显示确认框?

jquery - 每n分钟获取一次JSON文件