zoukankan      html  css  js  c++  java
  • 【jQuery】一个动画的例子

    概述

    jQuery最精彩的地方无异于它的动画了,这个例子是一个视频网站中的常用例子,类似于幻灯片方式展示多个视频,如下图所示。

    网页的基础代码为:

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title> </< span>title>
    <link href="style.css" rel="stylesheet" type="text/css" />
    <script src="../scripts/jquery-1.3.1.js" type="text/javascript"></< span>script>
    </< span>head>
    <body>

    <div class="v_show">
        <div class="v_caption">
            <h2 class="cartoon" title="卡通动漫">卡通动漫</< span>h2>
            <div class="highlight_tip">
                <span class="current">1</< span>span><span>2</< span>span><span>3</< span>span><span>4</< span>span>
            </< span>div>
            <div class="change_btn">
                <span class="prev" >上一页</< span>span>
                <span class="next">下一页</< span>span>
            </< span>div>
            <em><href="#">更多>></< span>a></< span>em>
        </< span>div>
        <div class="v_content">
            <div  class="v_content_list">
                <ul>
                    <li><href="#"><img src="img/01.jpg" alt="海贼王" /></< span>a><h4><href="#">海贼王</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/01.jpg" alt="海贼王" /></< span>a><h4><href="#">海贼王</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/01.jpg" alt="海贼王" /></< span>a><h4><href="#">海贼王</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/01.jpg" alt="海贼王" /></< span>a><h4><href="#">海贼王</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/02.jpg" alt="哆啦A梦" /></< span>a><h4><href="#">哆啦A梦</< span>a></< span>h4><span>播放:<em>33,326</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/02.jpg" alt="哆啦A梦" /></< span>a><h4><href="#">哆啦A梦</< span>a></< span>h4><span>播放:<em>33,326</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/02.jpg" alt="哆啦A梦" /></< span>a><h4><href="#">哆啦A梦</< span>a></< span>h4><span>播放:<em>33,326</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/02.jpg" alt="哆啦A梦" /></< span>a><h4><href="#">哆啦A梦</< span>a></< span>h4><span>播放:<em>33,326</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/03.jpg" alt="火影忍者" /></< span>a><h4><href="#">火影忍者</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/03.jpg" alt="火影忍者" /></< span>a><h4><href="#">火影忍者</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/03.jpg" alt="火影忍者" /></< span>a><h4><href="#">火影忍者</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/03.jpg" alt="火影忍者" /></< span>a><h4><href="#">火影忍者</< span>a></< span>h4><span>播放:<em>28,276</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/04.jpg" alt="龙珠" /></< span>a><h4><href="#">龙珠</< span>a></< span>h4><span>播放 <em>57,865</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/04.jpg" alt="龙珠" /></< span>a><h4><href="#">龙珠</< span>a></< span>h4><span>播放 <em>57,865</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/04.jpg" alt="龙珠" /></< span>a><h4><href="#">龙珠</< span>a></< span>h4><span>播放 <em>57,865</< span>em></< span>span></< span>li>
                    <li><href="#"><img src="img/04.jpg" alt="龙珠" /></< span>a><h4><href="#">龙珠</< span>a></< span>h4><span>播放 <em>57,865</< span>em></< span>span></< span>li>
                 </< span>ul>
            </< span>div>
        </< span>div>
    </< span>div>

    </< span>body>
    </< span>html>

    分析

    主要技术难点就在于控制动画。将next和prev按钮绑定上动画,动画通过语句:

    $("div.v_content_list").animate({left:'-='+v_width},"slow"); 

    来控制(向右),以及

    $("div.v_content_list").animate({left:'+='+v_width},"slow"); 

    来控制(向左),同时要考虑移动到最后一屏时要返回第一页或者第一页向左移动要直接到达最后一页。同时还要克服动画队列的问题(鼠标不再点击,动画却依然在播放,这时之前动画的累计效果),解决办法是每次触发动画前都要检测动画是否在运行。

    主要jQuery代码如下:


     

    $(document).ready(function(){
        var page=1;
        var i=4;
        $("span.next").click(function(){
        //alert('test');
            var v_width=$("div.v_content").width();
            var len=$("div.v_content_list").find("li").length;
            var page_count=Math.ceil(len/i);
            //alert(length);
            if(!$("div.v_content_list").is(":animated")){
            if(page==page_count){
                $("div.v_content_list").animate({left:'0px'},"slow");
                page=1;
            }
            else{
                page++;
                $("div.v_content_list").animate({left:'-='+v_width},"slow");
            }}
            $("div.highlight_tip").find("span").eq((page-1)).addClass("current").siblings().removeClass("current");
            //$("div.v_content_list").fadeTo(600,0.2);
        });

        $("span.prev").click(function(){
        //alert('test');
            var v_width=$("div.v_content").width();
            var len=$("div.v_content_list").find("li").length;
            var page_count=Math.ceil(len/i);
            //alert(length);
            if(!$("div.v_content_list").is(":animated")){
            if(page==1){
                $("div.v_content_list").animate({left:'-='+v_width*(page_count-1)},"slow");
                page=page_count;
            }
            else{
                page--;
                $("div.v_content_list").animate({left:'+='+v_width},"slow");
            }}
            $("div.highlight_tip").find("span").eq((page-1)).addClass("current").siblings().removeClass("current");
            //$("div.v_content_list").fadeTo(600,0.2);
        });
        
    }

    )

    演示文件

    下载地址:https://files.cnblogs.com/xweiwei/jQuery%E5%9B%BE%E7%89%87%E6%BB%9A%E5%8A%A8%E6%95%88%E6%9E%9C.rar 

     本文用菊子曰发布
  • 相关阅读:
    http基础知识总结
    unittest单元测试流程
    python测试框架nose
    HTML,CSS,JS之间的关系
    无法远程连接mysql,连接后也没有权限创建数据库
    Android 导入导出CSV,xls文件 .
    Android Sqlite 导入CSV文件 .
    用java开发的网站或者程序
    111个知名Java项目集锦,包括url和描述
    Ruby简介,附带示例程序
  • 原文地址:https://www.cnblogs.com/xweiwei/p/2788317.html
Copyright © 2011-2022 走看看