js网页侧边悬浮滚动广告

原生js实现网页侧边随页面滚动广告效果

css

    /*测试用的高度*/
    html {
        height: 3000px;
    }
    #rightroll {

        position: absolute;
    }
    .close {
        position: absolute;
        right: 0;
        top: -10px;
    }
    .close img {
        width: 20px;
        height: 20px;
    }
    li {
        list-style: none;
        width: 80px;
        height: 80px;
        background-color: red;
        margin-top: 10px;
    }

html

   <div id="rightroll">
        <div class="close" style="justify-content: flex-start;">
            <img class="close-img"
                src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABD1JREFUWEfFV11oHFUU/s7sZk0W2/St2AdBLS1YfKoJVJG29qEqrVY06YMPvlQFhWB+7r27EnB86e7cyY8EFKw+CYIaQW2lVaGmBa2S2AeRCo2aQvGHvohsZBM2O3PkLrNhdzIzuyaRDOzD7D3nnu+c891zvyFs8UNbHB9tA5iamtpeLpcPENFBy7IOMvNOItppEmDmW0R0y/f9y8x8OZvNfjswMFBqJ7m2ADiO8yIRKQB3trMpgJvM7Cil3mxlnwjAtu10V1fXWSJ6NMh0nojOeZ73WSaT+aNarf5p/k+n03dUKpVdqVTqGDMfJ6I9gf2FpaWlx23brsYBiQXgum4/M38QOF4FcEZKeaZVRmZda/08APPbb96J6KQQ4sMo30gArus+zMwXA4dpKWV/O4HDNlprE7QvAHFECPFV2GYNgL6+vlRPT0+tZMz8mlLKXk/wuo/jODYRvWre5+bm0tPT017jfmsAuK6rmVkQUUEI8cpGgtd9Xdc9zcx5InKFEDIWQLFY7Lcsy/T9qpTy/s0IXt9Da/294YTv+ydzudwqH1YrMDk5uWNlZcWQ7W4AL4QJp7WeAXAbgGellD9HgZuYmNhdrVbfB7AopTzcaBMQ8y0ACx0dHfsHBwf/rnGjoVcniOhjADeklAZE06O1vgLggKlOpVJ5YnR09PdGA8dxdhHRpwBM5SIrqLVeAHAXMz+plPqkCYDrupPM/DKAd6SUz4UBjI2N3ev7vindPmb+OpPJHK9nYdv2jmw2exbAQwCuWZbVPzIy8lNEEm8DOEVErwshBsMAvmHmBzzPO5zP5y9FlbgRBIAvu7u7jxm7Uql0jpmPJgU3doVC4VAqlZohoitCiAebAGitfwFwTyqV2js8PDwfR8AQiFoZAZxoFdwYjY+P7/E87zqAX6WUu8MVWGTm25l5u1JqMekEhEAY09iyh3iyjYhKRPSPEGLbpgEgoh9M35MqZ4I5jhMPYJ0tuBZkuA/Ad8zcp5T6La56rVrwX0lYK7sJVj8dAGbS6fTTQ0NDf0WBSCSh4ziniShvuCKlHEk6huGehzhxvlwuP2Xb9nLEMRwDMMzMBaVUbcyvDqJisXjUsqzPmXleKbU3YRBFEi40Jz5SStVuwRAJrxut4Pv+I7lc7osmAEZyLS8v/xionthRbFnWqaghYzYLQLzbYhTf7OzsvK8u2Zpuw0B6vfF/XkbM/FKjVFtzHTuOcz6QYOsWIhHtqwkTZr6glHqscX0NAKMDs9nsijHabEFSLpc7wvowTpKt6sGNCJO6EKmRLUYXJonSRl24UVEaqQebTkHU4DD6sLe3t2AkWrB+A8BFz/Pei5HlzwA4Yu78IGt3dnY2H9aBiRyIAhJItUKglpLuqfragu/7+UbpFefU1peRcTaSrVKpHDKfZQB6oz7NAMyaz7NMJnOpLlZaoW0bQKuN1ru+5QD+BU1gXj+OyZS9AAAAAElFTkSuQmCC"
                alt="">
        </div>
        <li></li>
        <li></li>
        <li></li>
    </div>

js

  var roll = document.getElementById('rightroll'),
        initX = 0,
        initY,
        compY,
        sp = 15,
        //可调整时间间隔,步进值不宜过大,不然IE下有点闪屏:
        timeGap = 5,
        doc = document.documentElement,
        docBody = document.body;
    // 调整初始位置
    compY = initY = 150;
    roll.style.right = initX + "px";
    ; (function () {
        var curScrollTop = (doc.scrollTop || docBody.scrollTop || 0) - (doc.clientTop || docBody.clientTop || 0);
        //每次comP的值都不一样;直到ro11.style.top===doc.scrollToptinitY;
        compY += (curScrollTop + initY - compY) / sp;
        roll.style.top = Math.ceil(compY) + "px";
        setTimeout(arguments.callee, timeGap);
    })();

效果图

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中实现侧边悬浮窗需要使用 WindowManager 和 View 来实现。首先,需要在应用的 AndroidManifest.xml 文件中声明 SYSTEM_ALERT_WINDOW 权限,以允许应用在其他应用的上层显示窗口。 接下来,在应用中创建一个悬浮窗口的 View,并且将其添加到 WindowManager 中。可以使用 WindowManager.LayoutParams 来设置悬浮窗口的位置、大小、透明度等属性。 同时,需要添加悬浮窗口的触摸事件,以便用户可以通过拖动悬浮窗口来移动它的位置。 最后,需要在应用退出时及时移除悬浮窗口,以避免在后台运行时占用系统资源。 以下是一个简单的示例代码,可以在应用中创建一个侧边悬浮窗口: ```java public class FloatingViewService extends Service implements View.OnTouchListener { private WindowManager mWindowManager; private View mFloatingView; private int mInitialX; private int mInitialY; private float mInitialTouchX; private float mInitialTouchY; public FloatingViewService() { // Empty constructor required for service. } @Override public IBinder onBind(Intent intent) { // Not used return null; } @Override public void onCreate() { super.onCreate(); // Create a new view for the floating window mFloatingView = LayoutInflater.from(this).inflate(R.layout.floating_view, null); // Set the touch listener on the floating view mFloatingView.setOnTouchListener(this); // Add the floating view to the window manager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); layoutParams.gravity = Gravity.CENTER | Gravity.START; layoutParams.x = 0; layoutParams.y = 0; mWindowManager.addView(mFloatingView, layoutParams); } @Override public void onDestroy() { super.onDestroy(); // Remove the floating view from the window manager when the service is destroyed if (mFloatingView != null) { mWindowManager.removeView(mFloatingView); } } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // Save the initial touch position and floating view position mInitialX = layoutParams.x; mInitialY = layoutParams.y; mInitialTouchX = event.getRawX(); mInitialTouchY = event.getRawY(); return true; case MotionEvent.ACTION_UP: // Do nothing on touch up return true; case MotionEvent.ACTION_MOVE: // Calculate the new position of the floating view based on the touch position layoutParams.x = mInitialX + (int) (event.getRawX() - mInitialTouchX); layoutParams.y = mInitialY + (int) (event.getRawY() - mInitialTouchY); mWindowManager.updateViewLayout(mFloatingView, layoutParams); return true; } return false; } } ``` 需要注意的是,在 Android 8.0 及以上版本中,需要使用 TYPE_APPLICATION_OVERLAY 来显示悬浮窗口。而在 Android 6.0 及以上版本中,需要动态请求 SYSTEM_ALERT_WINDOW 权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值