zoukankan      html  css  js  c++  java
  • Javascript-随滚轮匀速滑动的浮动广告窗动画

     1 <!DOCTYPE html>
     2 
     3 <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5     <meta charset="utf-8" />
     6     <title></title>
     7     <style type="text/css">
     8         * { padding: 0; margin: 0; border: 0; }
     9         .adv { position: relative;  150px; height: 300px; z-index: 1; top: 120px; left: 20px; }
    10         .con, .close1 { position: absolute; }
    11         .con {  150px; height: 300px; top: 0; left: 0; background-color: #7ca1ee; }
    12         .close1 {  23px; height: 23px; font-size: 22px; text-align: center; color: #ffffff; top: 5px; left: 120px; z-index: 999; }
    13             .close1:hover { background-color: #808080; }
    14         .text { height: 20000px;  200000px; margin: 0 auto; }
    15     </style>
    16 </head>
    17 <body>
    18 
    19     <div class="adv" id="advC">
    20         <div class="con"></div>
    21         <div class="close1" onclick="clo()">×</div>
    22     </div>
    23     <div class="text"> 唯一的缺点就是横向滑动效果不好,建议还是用固定式,不需要滑动比较好 </div>
    24 
    25 
    26     <script type="text/javascript">
    27         var adv = document.getElementById("advC");//获取广告窗口
    28 
    29         function clo() {//关闭广告窗口函数
    30             adv.style.display = "none";
    31         }
    32 
    33         var uu = null;//计时器全局变量声明
    34 
    35         function scol() {
    36             clearInterval(uu);//清除计时器
    37 
    38             //获取广告即将随滚动条滑动到的坐标
    39             var advTopX = 120 + parseInt(document.body.scrollTop);
    40             var advLeftX = 20 + parseInt(document.body.scrollLeft);
    41 
    42             var advTop, advLeft;//获取广告当前坐标
    43             if (adv.currentStyle) {
    44                 advTop = parseInt(adv.currentStyle.top);
    45                 advLeft = parseInt(adv.currentStyle.left);
    46             } else {
    47                 advTop = parseInt(document.defaultView.getComputedStyle(adv, null).top);
    48                 advLeft = parseInt(document.defaultView.getComputedStyle(adv, null).left);
    49             }
    50 
    51             //计算从当前坐标 到 即将滑动到的坐标 需要跑多少距离
    52             var TopLong = advTopX - advTop;
    53             var LeftLong = advLeftX - advLeft;
    54 
    55             //利用计时器实现广告匀速随滚动条滑动效果
    56             uu = setInterval(function () {
    57                 if ((advTop - 10 < advTopX && advTop + 10 > advTopX) && (advLeft - 10 < advLeftX && advLeft + 10 > advLeftX)) {//判断垂直与横向是否处于该区间值,前后误差10px
    58                     adv.style.top = advTopX + "px";//垂直距离=即将滑动到的距离
    59                     adv.style.left = advLeftX + "px";//横向距离=即将滑动到的距离
    60                     clearInterval(uu);//清除计时器,即到这里的时候就跳出计时器,固定广告位置
    61 
    62                 } else {
    63                     advTop += parseFloat(TopLong / 200);//将需要滑动的距离平均分为200份
    64                     adv.style.top = Math.ceil(advTop) + "px";//每次计时器进来滑动1份
    65 
    66                     advLeft += parseFloat(LeftLong / 200);//将需要滑动的距离平均分为200份
    67                     adv.style.left = Math.ceil(advLeft) + "px";//每次计时器进来滑动1份
    68                     //这里的份数可以调节滑动速度的快慢,但是必须为整十整百整千,数字越大越慢,越小越快
    69                 }
    70             }, 1);
    71 
    72         }
    73 
    74         window.onscroll = scol;//注册滚轮滑动事件
    75 
    76     </script>
    77 </body>
    78 </html>
  • 相关阅读:
    php魔术方法
    适用所有手机号码的正则表达式
    js按回车事件提交
    php 顺序线性表
    PLSQL连接远程oracle配置
    Jmeter 接口测试 —— 3种参数化方式
    Jmeter 接口测试 —— 3种采样器的使用
    【LICEcap】怎样用LICEcap录制屏幕及GIF图片
    WPS标题自动编号
    UT、IT、ST、UAT
  • 原文地址:https://www.cnblogs.com/leona-d/p/5779722.html
Copyright © 2011-2022 走看看