• 图片切换(动画版)


    学习了妙味课堂的图片切换(动画版)

    预览:图片切换

    这个小效果相对简单一点。

    知识预备:

    【1】background-position-x

    background-position属性设置背景原图像(由 background-image 定义)的位置,意味着使用这个属性的前提是必须设置背景原图像background-image。

    background-position有两个属性值, background-position:x | y,用法上可以对其一个属性单独使用 background-position-x 和 background-position-y。

    准备工作完毕,开始写代码

    第一步

    由于这次需要的div很多,所以采用动态添加的方式,直接看代码

     1     <style>
     2         body{
     3             margin: 0;
     4             background-color: #5e5e5e;
     5         }
     6         #box{
     7             width: 857px;
     8             height: 574px;
     9             padding-top: 126px;
    10             padding-left:143px;
    11             background: url(img/bg.png) no-repeat;
    12             margin: 0px auto;
    13         }
    14         #wrap{
    15             width: 700px;
    16             height: 420px;
    17             transform-style: preserve-3d;
    18             perspective: 800px;
    19         }
    20         #wrap div{
    21             width: 10px;
    22             height: 420px;
    23             background: url(img/01.png) no-repeat;
    24             float: left;
    25             transition: .5s;
    26         }
    27     </style>
    28 </head>
    29 <body>
    30     <div id="box">
    31         <div id="wrap"></div>
    32     </div>
    33     <script>
    34 
    35 
    36         //在wrap下,写70个div,每个div显示一张图片的一小片部分,这样70个div能完整的显示出一张图片
    37         for(var i=0;i<70;i++){
    38             str +='<div style="background-position-x:'+(-10*i)+'px"></div>';
    39         }
    40         oWrap.innerHTML = str;
    41 
    42         //获取70个div
    43         var divs = oWrap.getElementsByTagName('div');
        </script>
    </body>

    第二步

    写tab()函数,设置每个div要做的动画

    tab()函数

     1         // 每个div设置前一个div的透明度为1,并且设置自己的透明度为0和背景图片
     2         function tab(n){
     3             // 0 
     4             if(divs[n-1]){
     5                 divs[n-1].style.opacity = 1;
     6             }
     7             // 70
     8             if(divs[n]){
     9                 divs[n].style.opacity = 0;
    10                 divs[n].style.backgroundImage = "url(img/0"+imgNum+".png)";
    11             }
    12         }

    第三步

    写go()函数,利用定时器改变tab()函数的参数并且适时的改变背景图片

    go()

     1         //给tab()函数传递n值
     2         function go(){
     3             timer = setInterval(function(){
     4                 tab(num);
     5                 num++;
     6                 //一张图片切换完毕
     7                 if(num == 71){
     8                     clearInterval(timer);
     9                     //切换下一张图片
    10                     imgNum++;
    11                     //num清0,动画效果从第一个div开始
    12                     num = 0;
    13                     //当切到最后一张图片时,在从第一张开始切换
    14                     if(imgNum == 6){
    15                         imgNum = 1;
    16                     }
    17                     //切换完一张图片时切换下一张图片的间隔
    18                     setTimeout(go,800);
    19                 }
    20             //div变换的速度
    21             },80);
    22         }

    总结:这个动画效果实现起来简单,代码问题不大,主要就是实现思路的问题。

    源码:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>图片切换(动画版)</title>
     6     <style>
     7         body{
     8             margin: 0;
     9             background-color: #5e5e5e;
    10         }
    11         #box{
    12              857px;
    13             height: 574px;
    14             padding-top: 126px;
    15             padding-left:143px;
    16             background: url(img/bg.png) no-repeat;
    17             margin: 0px auto;
    18         }
    19         #wrap{
    20              700px;
    21             height: 420px;
    22             transform-style: preserve-3d;
    23             perspective: 800px;
    24         }
    25         #wrap div{
    26              10px;
    27             height: 420px;
    28             background: url(img/01.png) no-repeat;
    29             float: left;
    30             transition: .5s;
    31         }
    32     </style>
    33 </head>
    34 <body>
    35     <div id="box">
    36         <div id="wrap"></div>
    37     </div>
    38     <script>
    39 
    40 
    41         //在wrap下,写70个div,每个div显示一张图片的一小片部分,这样70个div能完整的显示出一张图片
    42         for(var i=0;i<70;i++){
    43             str +='<div style="background-position-x:'+(-10*i)+'px"></div>';
    44         }
    45         oWrap.innerHTML = str;
    46 
    47         //获取70个div
    48         var divs = oWrap.getElementsByTagName('div');
    49 
    50         go();
    51 
    52         //给tab()函数传递n值
    53         function go(){
    54             timer = setInterval(function(){
    55                 tab(num);
    56                 num++;
    57                 //一张图片切换完毕
    58                 if(num == 71){
    59                     clearInterval(timer);
    60                     //切换下一张图片
    61                     imgNum++;
    62                     //num清0,动画效果从第一个div开始
    63                     num = 0;
    64                     //当切到最后一张图片时,在从第一张开始切换
    65                     if(imgNum == 6){
    66                         imgNum = 1;
    67                     }
    68                     //切换完一张图片时切换下一张图片的间隔
    69                     setTimeout(go,800);
    70                 }
    71             //div变换的速度
    72             },80);
    73         }
    74 
    75         // 每个div设置前一个div的透明度为1,并且设置自己的透明度为0和背景图片
    76         function tab(n){
    77             // 0 
    78             if(divs[n-1]){
    79                 divs[n-1].style.opacity = 1;
    80             }
    81             // 70
    82             if(divs[n]){
    83                 divs[n].style.opacity = 0;
    84                 divs[n].style.backgroundImage = "url(img/0"+imgNum+".png)";
    85             }
    86         }
    87 
    88 
    89     </script>
    90 </body>
    91 </html>
  • 相关阅读:
    js解析json数据
    json.stringify
    [Eclipse的Maven项目搭建,仅为测试Maven功能]如何在Eclipse下搭建Maven项目
    在 Windows 中配置Maven:
    jsp引入文件时候经常遇到的${ctx}
    <%%> <%! %> <%=%> <%-- --%> jsp中jstl一些运用
    Spring MVC之@RequestBody, @ResponseBody 详解
    Spring MVC之@RequestMapping 详解
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详
    @RequiresPermissions 解释
  • 原文地址:https://www.cnblogs.com/qqandfqr/p/6115975.html
Copyright © 2020-2023  润新知