jquery动画 -- 2.元素坐标动画效果(创建一个图片走廊)-阿里云开发者社区

开发者社区> bill.kang> 正文

jquery动画 -- 2.元素坐标动画效果(创建一个图片走廊)

简介:   今天文章的内容是关于使用jquery的animate方法,修改html元素的position属性,创建一个图片走廊。效果预览图片:   大家可以下载demo看完整效果,下面介绍制作过程。   1.
+关注继续查看

  今天文章的内容是关于使用jquery的animate方法,修改html元素的position属性,创建一个图片走廊。效果预览图片:

  大家可以下载demo看完整效果,下面介绍制作过程。

  1.首先创建一个html页面,html结构如下:

<div id="slider">
        <div id="viewer">
            <img id="image1" src="img/amstrad.jpg" alt="Amstrad CPC 472" />
            <img id="image2" src="img/atari.jpg" alt="Atari TT030" />
            <img id="image3" src="img/commodore16.jpg" alt="Commodore 64" />
            <img id="image4" src="img/commodore128.jpg" alt="Commodore 128" />
            <img id="image5" src="img/spectrum.jpg" alt="Sinclair ZX Spectrum +2" />
        </div>
        <ul id="ui">
            <li class="hidden" id="prev"><a href="" title="Previous">&laquo;</a></li>
            <li><a href="#image1" title="Image 1" class="active">Image 1</a></li>
            <li><a href="#image2" title="Image 2">Image 2</a></li>
            <li><a href="#image3" title="Image 3">Image 3</a></li>
            <li><a href="#image4" title="Image 4">Image 4</a></li>
            <li><a href="#image5" title="Image 5">Image 5</a></li>
            <li class="hidden" id="next"><a href="" title="Next">&raquo;</a></li>
        </ul>
    </div>

  大家一看就明白,viewer包含了几张图片,ul对象里面包含了‘上一条’、‘下一条’和各个图片对应的导航。

  2.接下来需要为这些html元素设置css样式,css我就不多说了,就是给viewer、图片等元素加样式,viewer同时只能显示一张图片:

#slider
{
    width: 500px;
    position: relative;
}
#viewer
{
    width: 400px;
    height: 300px;
    margin: auto;
    position: relative;
    overflow: hidden;
}
#slider ul
{
    width: 350px;
    margin: 0 auto;
    padding: 0;
    list-style-type: none;
}
#slider ul:after
{
    content: ".";
    visibility: hidden;
    display: block;
    height: 0;
    clear: both;
}
#slider li
{
    margin-right: 10px;
    float: left;
}
#prev, #next
{
    position: absolute;
    top: 175px;
}
#prev
{
    left: 20px;
}
#next
{
    position: absolute;
    right: 10px;
}
.hidden
{
    display: none;
}
#slide
{
    width: 2000px;
    height: 300px;
    position: absolute;
    top: 0;
    left: 0;
}
#slide img
{
    float: left;
    width: 400px;
    height: 300px;
}
#title
{
    margin: 0;
    text-align: center;
}

  3.为页面添加jquery和jquery.easing.1.3.js的引用。然后就是我们这篇的重头了,为导航编写相应的js事件。

  首先我们需要创建一个新的div来包装5张图片。

$('#viewer').wrapInner('<div id="slide"></div>');

  接下来我们使用jquery的selector找到slider,slide,prev,next等对象,把他们存到相应的js变量中。

var container = $('#slider'),
    prev = container.find('#prev'),
    prevChild = prev.find('a'),
    next = container.find('#next').removeClass('hidden'),
    nextChild = next.find('a'),
    slide = container.find('#slide')

  创建两个新的js变量,key保存当前活动图片id,details保存所有图片各自的position和title信息。

key = "image1",
details = {
    image1: {
        position: 0,
        title: slide.children().eq(0).attr('alt')
    },
    image2: {
        position: -400,
        title: slide.children().eq(1).attr('alt')
    },
    image3: {
        position: -800,
        title: slide.children().eq(2).attr('alt')
    },
    image4: {
        position: -1200,
        title: slide.children().eq(3).attr('alt')
    },
    image5: {
        position: -1600,
        title: slide.children().eq(4).attr('alt')
    }
};

  为了显示图片标题,我们需要添加一个h2标题到页面。

$('<h2>', {
  id: 'title',
  text: details[key].title
}).prependTo('#slider'); 

  上述工作完成后,就可以开始为a标签添加click事件了,这里的a标签分两种,一种是‘上一条’和‘下一条’,另外一种是各图片对应的导航。我们需要分别为他们添加相应的click事件。但是他们都会使用到一个相同的回调函数,我们先完成回调函数的编写。代码思路我就直接以注释的方式完成。

function postAnim(dir) {
  //首先我们获取到当前活动图片的id,只包含数字部分
var keyMath = parseInt(key.match(/\d+$/));
  //slide的left小于0,也就是说当前活动图片不是图片1,‘上一条’导航显示;否则‘上一条’导航消失 (parseInt(slide.css(
'left')) < 0) ? prev.show() : prev.hide();
  //slide的left等于-1600,也就是说当前活动图片是第五章,‘下一条’导航消失,否则‘下一条’导航显示 (parseInt(slide.css(
'left')) === -1600) ? next.hide() : next.show();   
  //if条件语句当使用‘上一条’和‘下一条’导航时才有意义。实现的功能就是点‘上一条’是key减一,点‘下一条’key加1
if (dir) { var titleKey = (dir === 'back') ? keyMath - 1 : keyMath + 1; key = 'image' + titleKey; }   //重新设置h2标题 container.find('#title').text(details[key].title);
  //重新设置当前哪个图片为活动状态 container.find(
'.active').removeClass('active'); container.find('a[href=#' + key + ']').addClass('active'); }

  接下来我们完成‘上一条’和‘下一条’导航的功能。

nextChild.add(prevChild).click(function (e) {
   //阻止默认事件,否则动画效果就没有了 
  e.preventDefault();
var arrow = $(this).parent();
  //当前slide没有动画时,我们才添加新的动画效果
  if (!slide.is(':animated')) { slide.animate({ left: (arrow.attr('id') === 'prev') ? '+=400' : '-=400' }, 'slow', 'easeOutBack', function () { (arrow.attr("id") === "prev") ? postAnim("back") : postAnim("forward"); }); } });

  最后是图片对应的各自导航的功能实现。

$('#ui li a').not(prevChild).not(nextChild).click(function (e) {
   //阻止默认事件 
  e.preventDefault();   //获取当前活动图片id key
= $(this).attr('href').split('#')[1]; //设置动画效果
  slide.animate({ left: details[key].position },
'slow', 'easeOutBack', postAnim); });

  本课的内容完毕了,大家可以下载demo,查看功能具体是如下实现的。

  demo下载地址:jQuery.animation.position.zip

adpics.aspx?source=kbh1983&sourcesuninfo

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
jquery动画 -- 4.升级版遮罩效果的图片走廊--带自动运行效果
  我将上一章中了插件做了个小小的升级,实现了自动运行效果,完整代码大家见demo。    主要的变化点有:把‘下一条’、‘上一条’的click事件抽象到一个函数showNext中。添加setInterval,添加selector元素的hover事件。
932 0
自动化测试|录制回放效果差异检测
闲鱼技术-深宇 概述   回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他的代码出现错误。传统的自动化回归测试需要手动编写脚本获得页面元素的视图树,与原有的元素视图树进行比对。
8179 0
jquery动画 -- 3.创建一个带遮罩效果的图片走廊
  今天我们要完成的是一个带有遮罩效果(补间动画)的图片走廊jquery插件:jquery.tranzify.js。我们先看下效果:      好了,现在我们开始讲解这个jquery动画插件如何制作,大家可以再文章最后下载demo,查看详细代码。
895 0
LeetCode:1_Two_Sum | 两个元素相加等于目标元素 | Medium
题目: Given an array of integers, find two numbers such that they add up to a specific target number.
718 0
3.CCFadeOutTRTiles,部落格效果,跳动的方块特效,3D瓷砖晃动特效,破碎的3D瓷砖特效,瓷砖洗牌特效,分多行消失特效,分多列消失特效
 1 TiledGrid3D //TiledGrid3D //CCFadeOutTRTiles * action = CCFadeOutTRTiles::create(2, CCSize(20,20)); //CCFadeOutBLTiles * action = CCFadeOutBLTiles::create(2, CCSi
1651 0
iOS 创建带有图片的富文本
iOS 创建带有图片的富文本
10 0
使用 Sticky-Kit 实现基于 jQuery 的元素固定效果
  元素固定效果在网页中应用得很多,比较常见的使用场景有改进导航,显示广告。Sticky-Kit 是一个非常方便的 jQuery 插件,简化了创建/管理粘元素,有复杂的使用功能。这些功能包括:处理多个固定元素,启用/禁用的行为取决于对元素在视口中的位置和回调。
759 0
jQuery 写的插件图片上下切换幻灯效果
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
588 0
+关注
bill.kang
从事软件研发十余年,入行前端开发六年有余,对前端工程化有一定认识。 现就职于客如云科技有限公司,任前端技术经理一职。
109
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载