WEB02_Day01(下)-jQuery实战、jQuery动画

一、jQuery实战

1.1 轮播图案例

版本一:

  在页面中添加三张图片,并一字展开,隐藏浏览器滑动条

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>轮播图_显示图片01</title>
     <style type="text/css">
         /* 设置div的尺寸大小和图片尺寸大小一致 */
         div,img {
             width: 1000px;
             height: 400px;
        }
         /* 设置图片以div为参照依据 */
         div {
             position: relative;
             /* 处理浏览器带滑动条问题 */
             overflow: hidden;
        }
         /* 设置图片为绝对定位 */
         img {
             position: absolute;
        }
     </style>
 </head>
 <body>
     <div>
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner1.png">
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner2.png">
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner3.png">
     </div>
 
 
     <script type="text/javascript" src="../js/jquery-1.11.3.js"></script>
     <script type="text/javascript">
         //将三张图片在一字排开,不要互相之间遮挡
         var imgwidth = 1000;
 
         //for(var i = 0; i < 3 ; i++)
         $("img").each(function (i) {
            $(this).css("left", i * imgwidth + "px");
        });
     </script>
 </body>
 </html>

版本二:

  添加定时器,设定每间隔一段事件,进行控制页面中图片元素的移动,从而实现图片轮播的效果

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>轮播图_图片轮播02</title>
     <style type="text/css">
         /* 设置div的尺寸大小和图片尺寸大小一致 */
         div,img {
             width: 1000px;
             height: 400px;
        }
         /* 设置图片以div为参照依据 */
         div {
             position: relative;
             /* 处理浏览器带滑动条问题 */
             overflow: hidden;
        }
         /* 设置图片为绝对定位 */
         img {
             position: absolute;
        }
     </style>
 </head>
 <body>
     <div>
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner1.png">
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner2.png">
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner3.png">
     </div>
 
 
     <script type="text/javascript" src="../js/jquery-1.11.3.js"></script>
     <script type="text/javascript">
         //将三张图片在一字排开,不要互相之间遮挡
         var imgwidth = 1000;
 
         //for(var i = 0; i < 3 ; i++)
         $("img").each(function (i) {
            $(this).css("left", i * imgwidth + "px");
        });
 
 
         //将图片整个切换的逻辑定义一个方法进行封装
         function imgChange() {
             //定义定时器对象,每间隔10毫秒进行图片的向左移动
             var timer = setInterval(function () {
                 //遍历当前三张图片的位置
                 $("img").each(function () {
                     //获取每张图片距离左侧一个像素单位
                     var pos = parseInt($(this).css("left"));
                     //图片每次向左侧移动10像素
                     pos -= 10;
                     /*
                    *判断当前图片向左移动以后是否脱离的div的显示区域
                    * 图片的左边界,距离div左侧1000px
                    */
                     if (pos <= -imgwidth) {
                         //停止定时器对象,并且让移出边界的图片的位置设置成所有图片的最后方
                         pos = 2000;
                         clearInterval(timer);
                    }
 
                     //将移动以后的图片位置再次赋值
                     $(this).css("left",pos + "px");                
                });
            },10);
        }
         
         //定义另一定时器对象,在每次间隔3秒钟以后,进行调用执行上方定时器执行图片轮播的业务逻辑
         var loop = setInterval(imgChange,3000);
 
     </script>
 </body>
 </html>
  • 解决图片向左移动一去不复返问题

  • 解决图片当前停止以后,不再运行的问题

版本三:

  • 鼠标移入图片时,取消当前的轮播业务,然后当鼠标移出图片时,轮播业务继续执行

  • 当页面不在访问时(失去焦点),取消当前的轮播业务,当再次获得焦点是,轮播业务继续执行

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>轮播图_完善03</title>
     <style type="text/css">
         /* 设置div的尺寸大小和图片尺寸大小一致 */
         div,img {
             width: 1000px;
             height: 400px;
        }
         /* 设置图片以div为参照依据 */
         div {
             position: relative;
             /* 处理浏览器带滑动条问题 */
             overflow: hidden;
        }
         /* 设置图片为绝对定位 */
         img {
             position: absolute;
        }
     </style>
 </head>
 <body>
     <div>
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner1.png">
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner2.png">
         <img src="http://doc.canglaoshi.org/tstore_v1/images/itemCat/itemCat_banner3.png">
     </div>
 
 
     <script type="text/javascript" src="../js/jquery-1.11.3.js"></script>
     <script type="text/javascript">
         //将三张图片在一字排开,不要互相之间遮挡
         var imgwidth = 1000;
 
         //for(var i = 0; i < 3 ; i++)
         $("img").each(function (i) {
            $(this).css("left", i * imgwidth + "px");
        });
 
 
         //将图片整个切换的逻辑定义一个方法进行封装
         function imgChange() {
             //定义定时器对象,每间隔10毫秒进行图片的向左移动
             var timer = setInterval(function () {
                 //遍历当前三张图片的位置
                 $("img").each(function () {
                     //获取每张图片距离左侧一个像素单位
                     var pos = parseInt($(this).css("left"));
                     //图片每次向左侧移动10像素
                     pos -= 10;
                     /*
                    *判断当前图片向左移动以后是否脱离的div的显示区域
                    * 图片的左边界,距离div左侧1000px
                    */
                     if (pos <= -imgwidth) {
                         //停止定时器对象,并且让移出边界的图片的位置设置成所有图片的最后方
                         pos = 2000;
                         clearInterval(timer);
                    }
 
                     //将移动以后的图片位置再次赋值
                     $(this).css("left",pos + "px");                
                });
            },10);
        }
         
         //定义另一定时器对象,在每次间隔3秒钟以后,进行调用执行上方定时器执行图片轮播的业务逻辑
         var loop = setInterval(imgChange,3000);
 
         //给div添加鼠标移入事件
         $("div").mouseover(function () {
             //停止定时器播放轮播图
             clearInterval(loop);
        });
 
         //给div添加鼠标移出事件
         $("div").mouseout(function () {
             //只有定时器停止以后才需要再次开启定时器,确保之前是停止定时器的
             clearInterval(loop);
 
             //再次调用执行轮播的定时器逻辑
             loop = setInterval(imgChange,3000);
 
        });
 
         //当用户没有使用该界面时(页面失去焦点),需要停止定时器,节省CPU资源
         onblur = function () {
             clearInterval(loop);
        }
 
         //当用户使用该界面时(页面获取焦点),开启定时器
         onfocus = function () {
             clearInterval(loop);
             loop = setInterval(imgChange,3000);
        }
 
     </script>
 </body>
 </html>

 

二、jQuery动画

2.1 复合事件hover

  在轮播图案例中,像鼠标移入和鼠标移出事件经常是一起出现的,单独编写两个事件往往很繁琐,所以jQuery提供了复合事件hover进行解决当前问题。

格式:

 $(selector).hover(inFunction,outFunction);

案例:

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>复合事件hover案例</title>
     <style type="text/css">
         div {
             width: 60px;
             height: 60px;
             border: 1px solid red;
             color: seagreen;
        }
     </style>
 </head>
 <body>
     <div>div1</div>
     <div>div2</div>
     <div>div3</div>
     <script type="text/javascript" src="../js/jquery-1.11.3.js"></script>
     <script type="text/javascript">
         $("div").hover(function () {
             //鼠标移入div区域,更改div的文字颜色
             $(this).css("color","blue");
        },function () {
             //鼠标移出div区域,更改div的文字颜色,设置字体默认颜色
             $(this).css("color","");
        });
     </script>
 </body>
 </html>

2.2 事件模拟

  事件模拟就是通过编写的jQuery代码,在代码运行的过程中,模拟当前点击指定的区域位置从而进行主动触发某个事件的操作。

应用场景:

  例如当页面中有一个按钮,按钮绑定了一个点击事件,如果当前不在用户实际点击操作按钮的情况下,我们希望间隔2秒钟事件就行触发按钮的点击事件。可以使用jQuery中所提供的的trigger()方法进行模拟操作,从而达到当前不需要人为点击按钮的业务需求。

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>事件模拟案例</title>
 </head>
 <body>
     <input type="button" value="按钮" onclick="fn1()">
 
     <script type="text/javascript" src="../js/jquery-1.11.3.js"></script>
     <script type="text/javascript">
         function fn1() {
             console.log('欢迎同学们推荐身边的朋友到达内报名学习Java课程!!!');
        }
 
         setInterval(function () {
             $("input").trigger("click");
        },2000);
       
 
     </script>
 
 </body>
 </html>

2.3 jQuery动画

概述:

  当前在页面书写过程中,常常需要进行添加一些动画效果,如果使用js进行编写代码,往往过于繁琐,当前在jQuery中也封装很多的动画效果API,所以只需要调用jQuery中的相关动画API就可以实现对应的动画效果,当然也提供了自定义动画的API方法。

方法:

  • show()显示

  • hide()隐藏

  • toggle()显示隐藏切换

  • fadeIn()淡入

  • fadeOut()淡出

  • fadeToggle()淡入淡出切换

  • slideDown()展开

  • slideUp()收缩

  • slideToggle()展开收缩切换

  • animate()自定义动画效果

 <!DOCTYPE html>
 <html lang="en">
 <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery动画案例</title>
    <style type="text/css">
    img {
        width: 1000px;
        height: 400px;
    }
    </style>
 </head>
 <body>
    <input type="button" value="隐藏">
    <input type="button" value="显示">
    <input type="button" value="切换一">
    <input type="button" value="淡出">
    <input type="button" value="淡入">
    <input type="button" value="切换二">
    <input type="button" value="收缩">
    <input type="button" value="展开">
    <input type="button" value="切换三">
    <hr>
    <img src="../img/1.jpg">
 
    <script type="text/javascript" src="../js/jquery-1.11.3.js"></script>
    <script type="text/javascript">
        //隐藏
        $("input:eq(0)").click(function () {
            $("img").hide(2000);
        });
        //显示
        $("input:eq(1)").click(function () {
            $("img").show(2000);
        });
        //切换一
        $("input:eq(2)").click(function () {
            $("img").toggle(2000);
        });
        //淡出
        $("input:eq(3)").click(function () {
            $("img").fadeOut(2000);
        });
 
        //淡入
        $("input:eq(4)").click(function () {
            $("img").fadeIn(2000);
        });
        //切换二
        $("input:eq(5)").click(function () {
            $("img").fadeToggle(2000);
        });
        //收缩
        $("input:eq(6)").click(function () {
            $("img").slideUp(2000);
        });
        //展开
        $("input:eq(7)").click(function () {
            $("img").slideDown(2000);
        });
        //切换三
        $("input:eq(8)").click(function () {
            $("img").slideToggle(2000);
        });
    </script>
 
 </body>
 </html>

 

三、课后作业

1.自行使用animate()方法实现自定义动画

2.预习Bootstrap官网中的标签和css内容

3.面试题:Java中如果进行序列化操作时,不希望将某些字段进行序列化,应该如何处理?

 

posted @ 2021-08-27 09:00  Coder_Cui  阅读(48)  评论(0编辑  收藏  举报