JavaScript实现侧边广告效果

本文介绍了一种使用JavaScript实现的网页侧边广告滑动效果,当用户滚动页面时,侧边广告会跟随滑动一定距离后返回原位。通过监听窗口滚动事件,并结合缓动动画,实现了流畅的视觉体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值