JavaScript实现侧边广告效果

用JavaScript实现了一个小效果:滑动页面,侧边广告一起滑动一定距离,返回原来位置。

HTML:

<div id="aside">
        <img src="./images/float.jpg" alt="">
 </div>
 <div class="main">
    <p>加油!</p>
    <p>最棒!</p>
    <p>加油!</p>
    <p>最棒!</p>
    <p>加油!</p>
    <p>最棒!</p>
    <p>加油!</p>
    <p>最棒!</p>
</div>

css:

    *{
               margin:0;
           padding:0;
           list-style: none;
           border:none;
       }
       #aside{
           width:150px;
           position: absolute;
           top:100px;
           left:0;
       }
       #aside img{
           width:100%;
       }
       .main p{
           text-align: center;
           line-height: 250px;
           font-size: 20px;
           height: 250px;
           width:100%;
       }
       .main p:nth-child(even){
           background-color: #ddfafa;
       }
       .main p:nth-child(odd){
           background-color: #d5a6f0;
       }

JavaScript:

window.onload=function(){
    //1 获取广告头部
    var offset_top=$("aside").offsetTop;
    //2 监听窗口滚动
    var begin=0,end =0,timer=null;   
    window.onscroll=function(){
        //2.0 清除定时器(在事件开始前清除)
        clearInterval(timer);
        //2.1 获取滚动高度
        var scroll_top=scroll().top;
        end=offset_top+scroll_top;

        //2.2 缓动动画
        timer=setInterval(function(){
            begin=begin+(end - begin)*0.2;
            $("aside").style.top=begin+"px";
            //清除定时器
            if(Math.round(begin)===end){
                clearInterval(timer);
            }

        },20);
    }
}

function scroll() {
    if(window.pageYOffset !== null){
        return {
            top: window.pageYOffset,
            left: window.pageXOffset
        }
    }else if(document.compatMode === "CSS1Compat"){ // W3C
        return {
            top: document.documentElement.scrollTop,
            left: document.documentElement.scrollLeft
        }
    }

    return {
        top: document.body.scrollTop,
        left: document.body.scrollLeft
    }
}

function $(id) {
    return typeof id === "string" ? document.getElementById(id) : null;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值