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

下面是基于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 判断浏览器类型及版本是前端开发中的一个常见需求,下面为大家介绍一下如何进行判断。 获取userAgent字符串 在判断浏览器类型和版本之前,我们需要先获取浏览器的userAgent字符串。这可以通过JavaScript里的navigator对象来实现: var ua = navigator.userAgent.toLowerCase()…

    JavaScript 2023年6月11日
    00
  • Javascript 面向对象 对象(Object)

    下面是 Javascript 面向对象 对象(Object)的完整攻略: 理解概念 JavaScript 的面向对象和其他语言很相似,都是基于类和实例的概念。但是 JavaScript 中没有类,而是通过对象来实现面向对象编程。 对象可以看作是一个属性的集合,每个属性都是由键值对(key-value pair)组成,键名是字符串,键值可以是任意的 JavaS…

    JavaScript 2023年5月27日
    00
  • javaScript中定义类或对象的五种方式总结

    下面是详细讲解“JavaScript中定义类或对象的五种方式总结”的完整攻略: 1. 使用对象字面量定义对象 对象字面量是JavaScript中定义对象的一种常用方法。它使用一对大括号{}来定义一个空对象,然后通过对象的属性和方法来描述这个对象。 示例代码: let person = { name: ‘张三’, age: 18, gender: ‘男’, s…

    JavaScript 2023年5月27日
    00
  • JavaScript解决浮点数计算不准确问题的方法分析

    下面我将对“JavaScript解决浮点数计算不准确问题的方法分析”的完整攻略进行详细讲解。 问题的分析 在JavaScript中,浮点数计算可能会出现不准确的问题。例如,以下代码运行结果并不是我们预期的0.3: console.log(0.1 + 0.2); // 0.30000000000000004 这是因为JavaScript中数字采用的是IEEE7…

    JavaScript 2023年5月28日
    00
  • 几个比较实用的JavaScript 测试及效验工具

    接下来我将向你介绍几个比较实用的 JavaScript 测试及效验工具,包括单元测试工具 Jest、代码质量工具 ESLint、以及文档生成工具 JSDoc,并且会附上相应的示例说明。 Jest:JavaScript 测试框架 Jest 是由 Facebook 开发推出的一款 JavaScript 测试框架,它可以用于执行单元测试、集成测试和端到端测试,可以…

    JavaScript 2023年5月27日
    00
  • 一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能

    要实现一个用JavaScript写的Select支持上下键、首字母筛选以及回车取值的功能可以分为以下几个步骤: 创建一个select元素并隐藏原生的下拉列表。可以使用CSS的display:none或者position:absolute; left:-9999px; 等方法来实现。 <select id="mySelect" sty…

    JavaScript 2023年6月11日
    00
  • JS动画效果打开、关闭层的实现方法

    JS动画效果打开、关闭层的实现方法可以通过以下步骤来完成: 准备HTML、CSS和JS代码 首先,需要准备好HTML页面和相应的CSS样式。创建一个HTML页面,在其上添加一个按钮或其他元素, 用于打开和关闭层。 <!DOCTYPE html> <html> <head> <title>JS动画效果打开、关闭层…

    JavaScript 2023年6月10日
    00
  • JS动态添加iframe的代码

    下面详细讲解一下“JS动态添加iframe的代码”的完整攻略。 什么是iframe? iframe (即内嵌框架) 是 HTML 语言中一种非常强大的标签,可以将一个HTML文档文件嵌入到另一个 HTML 文档中,以达到创建分页面的效果。 如何动态添加iframe 在 JavaScript 中,可以通过以下代码,动态地添加 iframe: var ifram…

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