基于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 补零 函数集合 介绍:在 JavaScript 中,有时候我们需要对数字进行处理,让它们保持一定的长度,并在前面添加 “0” (零) ,这时候就需要用到补零函数。本文将详细讲解 JavaScript 补零 函数集合和应用场景。 函数列表 函数一:补零函数补充 函数二:转化成固定长度字符串函数 函数三:Date 对象转化成指定格式…

    JavaScript 2023年5月27日
    00
  • javascript asp教程第十三课--include文件

    下面我来详细讲解“javascript asp教程第十三课--include文件”的完整攻略。 什么是Include文件 在ASP中,可以使用指令引用其它ASP文件或文本文件,这个被引用的文件称为Include文件。当ASP页面执行带有指令的代码时,服务器会自动将Include文件的内容插入到指令所在的位置。 如何使用Include文件 要使用Include…

    JavaScript 2023年5月27日
    00
  • js中 javascript:void(0) 用法详解

    js中 javascript:void(0) 用法详解 在JavaScript开发中,我们经常会遇到一种URL地址是”javascript:void(0)”的情况,它本身并不是一个有效的URL,而是一种特殊的语法,它的应用范围非常广泛。本文将详细讲解”javascript:void(0)”的用法。 1. 作为超链接的href值 最常见的用法是将”javasc…

    JavaScript 2023年5月18日
    00
  • document.getElementById获取控件对象为空的解决方法

    当使用 document.getElementById 获取控件对象时,有可能会出现获取为空的情况。解决这种情况的方法有很多,本攻略将介绍几种常见的解决方法。 方法一:确认页面元素存在 在使用 document.getElementById 获取控件对象时,首要要确认该控件元素是否在页面中存在。可以使用浏览器开发者工具查看页面元素结构,确认该控件元素是否存在…

    JavaScript 2023年6月10日
    00
  • 正则表达式进行页面表单验证功能

    正则表达式(Regular Expression)是一种处理字符串的强大工具,它可以用于字符串的匹配、搜索、替换和分割等操作。在网站制作过程中,利用正则表达式可以实现表单验证的功能,保证用户填写的数据符合规范。 以下是正则表达式进行页面表单验证的完整攻略: 确认需要验证的表单项,例如:用户名、密码、邮箱、手机号码等等 编写验证函数,将要验证的表单项和相应的正…

    JavaScript 2023年6月10日
    00
  • JavaScript中的return语句简单介绍

    JavaScript中的return是一个语句(statement),它表示函数执行完毕后返回一个值,并结束函数的执行。当函数执行到return语句时,函数将会立即停止执行,并将return后面的值返回给函数调用者。同时,如果函数没有返回值,则会返回undefined。 下面示例说明了return的用法: function add(a, b) { retur…

    JavaScript 2023年5月28日
    00
  • Javascript函数技巧学习

    下面是详细的讲解“JavaScript函数技巧学习”的完整攻略。 一、入门和基础知识 首先需要熟悉JavaScript函数基础知识,例如函数的定义、调用、参数、返回值等。同时需要了解函数作用域、闭包、箭头函数等高级概念。 二、函数式编程 掌握函数式编程是成为JavaScript高手的必要技能。函数式编程通过组合函数和避免副作用来提高代码的可读性和可维护性,使…

    JavaScript 2023年5月17日
    00
  • 一个简单的网站访问JS计数器 刷新1次加1次访问

    实现一个简单的网站访问计数器可以通过 JavaScript 来完成。我们需要在网站的页面中添加一个计数器的容器,然后通过 JavaScript 代码来动态修改这个容器中的数值即可。 以下是实现这个计数器的一些步骤: 1. 建立计数器的容器 我们需要创建一个 HTML 元素来表示这个计数器的容器,并且给它一个初始值。例如,在一个网站主页中,我们可以添加一个 &…

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