基于JS实现弹性漂浮广告的示例代码

yizhihongxing

下面是基于JS实现弹性漂浮广告的完整攻略:

思路

  1. 使用position: fixed实现元素的固定位置,定义元素距离浏览器顶部的距离。
  2. 在需要使用该广告的页面中添加JS文件或script代码段。
  3. 通过JS代码,利用setInterval来实现广告元素的动态滚动。
  4. 通过监听窗口大小的变化,实现响应式布局,调整广告元素的位置和大小。

代码实现

CSS

定义广告元素的样式。

.floating-ad {
    position: fixed;
    top: 30%;
    left: 0;
    width: 100%;
    text-align: center;
    z-index: 99999;
    display: none; /* 初始隐藏广告 */
}

JS

  1. 获取广告元素对象,以及定义元素最大宽度和高度。
  2. 使用setInterval函数设置定时器,定义广告元素的滚动速度和容器宽度。
  3. 通过监听窗口大小的变化,实现广告元素的位置和大小的动态调整。
  4. 通过监听鼠标滚轮事件,实现广告元素的动态显示与隐藏。

示例1:最简单的实现方案

// 获取广告元素以及定义最大宽度、高度
const ad = document.querySelector('.floating-ad');
const maxWidth = 600;
const maxHeight = 300;

// 定义广告元素滚动速度(px/s)和容器宽度
let speed = 100;
let containerWidth = document.body.clientWidth;

// 设置定时器,实现广告元素的滚动效果
setInterval(() => {
    let adWidth = ad.clientWidth;
    let adHeight = ad.clientHeight;
    // 当广告元素超过最大宽度或高度时,重置广告元素的大小和位置
    if (adWidth > maxWidth || adHeight > maxHeight) {
        ad.style.width = maxWidth + 'px';
        ad.style.height = maxHeight + 'px';
        ad.style.top = '30%';
        ad.style.left = (containerWidth - maxWidth) / 2 + 'px';
    }
    // 计算广告元素新的left值,并更新广告元素的位置
    let newLeft = parseFloat(ad.style.left) + speed / 100;
    if (newLeft >= containerWidth - adWidth) {
        newLeft = containerWidth - adWidth;
        speed = -speed;
    }
    if (newLeft <= 0) {
        newLeft = 0;
        speed = -speed;
    }
    ad.style.left = newLeft + 'px';
}, 16);

// 监听窗口大小变化,动态调整广告元素的位置和大小
window.addEventListener('resize', () => {
    containerWidth = document.body.clientWidth;
    ad.style.left = (containerWidth - ad.clientWidth) / 2 + 'px';
    ad.style.top = '30%';
});

// 监听鼠标滚轮事件,实现广告元素的动态显示和隐藏
let lastScrollTop = 0;
window.addEventListener('scroll', () => {
    let scrollTop = window.pageYOffset || document.documentElement.scrollTop;
    if (scrollTop > lastScrollTop) {
        ad.style.display = 'none';
    } else {
        ad.style.display = 'block';
    }
    lastScrollTop = scrollTop;
});

示例2:结合jQuery实现更加简洁优雅的代码

$(function() {
    const ad = $('.floating-ad');
    const maxWidth = 600;
    const maxHeight = 300;
    let speed = 100;
    let containerWidth = $(window).width();

    setInterval(() => {
        if (ad.width() > maxWidth || ad.height() > maxHeight) {
            ad.width(maxWidth).height(maxHeight).css({
                top: '30%',
                left: (containerWidth - maxWidth) / 2
            });
        }
        let newLeft = parseFloat(ad.css('left')) + speed / 100;
        if (newLeft >= containerWidth - ad.width()) {
            newLeft = containerWidth - ad.width();
            speed = -speed;
        }
        if (newLeft <= 0) {
            newLeft = 0;
            speed = -speed;
        }
        ad.css('left', newLeft);
    }, 16);

    $(window).on('resize', () => {
        containerWidth = $(window).width();
        ad.css('left', (containerWidth - ad.width()) / 2).css('top', '30%');
    });

    let lastScrollTop = 0;
    $(window).on('scroll', () => {
        let scrollTop = $(window).scrollTop();
        if (scrollTop > lastScrollTop) {
            ad.hide();
        } else {
            ad.show();
        }
        lastScrollTop = scrollTop;
    });
});

示例说明

  1. 示例1中,使用原生JS实现广告元素的运动轨迹和响应式布局,代码比较复杂,需要注意各个参数之间的关系,可以帮助初学者了解JS实现动态效果的基本思路和方式。
  2. 示例2中,使用jQuery简化了代码,使代码更加简洁优雅,也可以更加方便地应用于实际项目中。同时,该方案还演示了如何使用jQuery来实现响应式布局等常见功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于JS实现弹性漂浮广告的示例代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript中的运算符讲解

    JavaScript中的运算符讲解 JavaScript中的运算符用来执行各种算术和逻辑操作。JavaScript支持多种运算符,包括算术、比较、逻辑、条件、位运算符等。本篇文档将介绍JavaScript中的各种运算符,并通过示例说明其使用方法和效果。 算术运算符 算术运算符用于执行算术操作,如加、减、乘、除等。JavaScript中的算术运算符包括加法运算…

    JavaScript 2023年5月18日
    00
  • Python、Javascript中的闭包比较

    下面我将详细讲解Python和JavaScript中的闭包比较。 什么是闭包? 在JavaScript和Python中,闭包是指可以访问外部函数作用域的函数。简单地说,内部函数可以访问外部函数中的变量。这意味着,即使外部函数已经返回,内部函数也可以访问并操作它们。 Python中的闭包 下面我们来看一个Python中的闭包示例: def outer_func…

    JavaScript 2023年6月10日
    00
  • 如何用javascript正则表达式验证身份证号码是否合法

    以下是使用 JavaScript 正则表达式验证身份证号码是否合法的攻略,包含了具体步骤和两条示例: 1. 正则表达式模式 身份证号的验证可以使用正则表达式来实现,身份证号具有一定的规则,我们可以写出相应的正则表达式模式来匹配这些规则。 身份证号码的验证规则如下: 长度为18位; 前17位均为数字; 第18位可以是数字,也可以是大写字母X。 因此,我们可以使…

    JavaScript 2023年5月19日
    00
  • 归纳下js面向对象的几种常见写法总结

    针对“归纳下js面向对象的几种常见写法总结”的完整攻略,我给出如下的详细讲解: 1. 面向对象编程 面向对象编程(OOP,Object Oriented Programming)是一种编程范式,它将任务分解成一些个体,这些个体通过彼此分工协作来完成任务。在 JavaScript 中,对象、构造函数、原型链和继承都是实现 OOP 的关键元素。 2. JS面向对…

    JavaScript 2023年5月27日
    00
  • javascript window.opener的用法分析

    接下来我将详细讲解“JavaScript window.opener的用法分析”。 什么是window.opener window.opener 是一个指向打开当前窗口的父窗口的引用,它可以让我们在新开的窗口中与原来打开该窗口的父窗口进行通讯操作。如果当前窗口不是通过 window.open 打开的而是在当前窗口内直接打开了另一个窗口,此时该属性值为 nul…

    JavaScript 2023年6月11日
    00
  • JavaScript中的this原理及6种常见使用场景详解

    让我来详细讲解一下“JavaScript中的this原理及6种常见使用场景详解”。 JavaScript中的this原理及6种常见使用场景详解 1. this是什么? 在JavaScript中,this是一个关键字,它指向当前函数的执行上下文。也就是说,this指向当前函数被调用时所在的对象。 2. this的指向 this的指向可以根据执行上下文的不同而不…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript对象转原始值

    回答: 1. JavaScript对象转原始值 在JavaScript中,当一个对象被转换成原始类型时,会调用该对象的valueOf()和toString()方法。如果这两个方法都不存在或没有返回原始值,则会抛出TypeError异常。 1.1 valueOf()方法 对于大多数JavaScript对象,valueOf()方法会返回对象本身。但是对于包装对象…

    JavaScript 2023年5月27日
    00
  • JavaScript原型链及常见的继承方法

    JavaScript原型链及常见的继承方法 什么是原型链 在JavaScript中,每个对象都有一个原型对象,原型对象又有自己的原型对象,形成了一条链,我们称之为原型链。在这条链上,如果查找某个属性或方法(即某个属性或方法不存在于当前对象上),则会一直向上查找直到找到该属性或方法或查找到原型链的顶层,如果还没有找到,则返回undefined。 常见的继承方法…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部