使用HTML、CSS和JavaScript创建滚动弹幕效果

news2024/11/24 12:58:11

使用HTML、CSS和JavaScript创建滚动弹幕效果

在现代网页设计中,滚动文本是一种常见的动态效果,可以吸引用户的注意力并增强交互体验。在这篇博客文章中,我们将详细介绍如何使用HTML、CSS和JavaScript实现滚动文本效果。

效果

在这里插入图片描述

步骤1:设置HTML结构

我们首先需要创建一个基本的HTML结构,包含多个滚动的文本框。以下是示例代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="index.CSS">
</head>
<body>
    <div class="container">
        <div class="box">
            <span>HTML</span>
            <span>CSS</span>
            <span>JS</span>
            <span>JavaWeb</span>
            <span>MySQL</span>
            <span>Java</span>
            <span>Python数学建模</span>
            <span>C语言</span>
        </div>
        <div class="box">
            <span>HTML</span>
            <span>CSS</span>
            <span>JS</span>
            <span>JavaWeb</span>
            <span>MySQL</span>
            <span>Java</span>
            <span>Python数学建模</span>
            <span>C语言</span>
        </div>
        <div class="box">
            <span>HTML</span>
            <span>CSS</span>
            <span>JS</span>
            <span>JavaWeb</span>
            <span>MySQL</span>
            <span>Java</span>
            <span>Python数学建模</span>
            <span>C语言</span>
        </div>
    </div>
    <script src="index.JS"></script>
</body>
</html>

代码解析

  • <div class="container">:这个容器将包含所有的滚动文本框。
  • <div class="box">:每个box类的div包含了一组要滚动的文本。

步骤2:添加CSS样式

接下来,我们为文本框和容器添加样式,以确保它们的外观和行为符合预期。以下是CSS代码:

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    font-family: '江城律动黑';
    font-size: 16px;
}

.container {
    position: relative;
    display: flex;
    width: 700px;
    height: 150px;
    overflow: hidden;
    mask-image: linear-gradient(90deg, transparent, red 20%, red 80%, transparent);
    background-color: aqua;
    cursor: pointer;
}

.container div {
    position: absolute;
    width: 700px;
    white-space: nowrap;
    left: 0;
}

.container div:nth-of-type(1) {
    top: 20px;
}

.container div:nth-of-type(2) {
    top: 60px;
}

.container div:nth-of-type(3) {
    top: 100px;
}

.container span {
    display: inline-block;
    white-space: nowrap;
    letter-spacing: .2em;
    padding: 5px 10px;
    margin: 0 10px;
    background-color: white;
    border-radius: 10px;
}

样式解析

  • 基本样式:重置了默认的边距和填充,以避免浏览器差异。
  • .container:设置为相对定位,使其中的文本框可以绝对定位。使用mask-image创建一个渐变遮罩,增加视觉效果。
  • .box:每个文本框的位置通过绝对定位来设置,便于实现动画效果。
  • .span:文本元素的样式,包括背景色和边角圆润效果。

步骤3:实现JavaScript功能

最后,我们将使用JavaScript为文本框添加移动效果。以下是JavaScript代码:

const boxElements = document.getElementsByClassName("box");
const box_1 = boxElements[0];
const box_2 = boxElements[1];
const box_3 = boxElements[2];

function moveBox(element) {
    // 移动到左侧
    element.style.left = "-130%";
    // 设置过渡效果
    element.style.transition = "left 5s";

    // 等待一段时间后,移动到右侧
    setTimeout(() => {
        element.style.left = "120%";
        // 移除过渡效果
        element.style.transition = "left 0s";
        // 再次调用函数形成循环
        setTimeout(() => moveBox(element), 200);
    }, 4500);
}

// 分别调用moveBox函数,设置不同的延迟时间
setTimeout(() => moveBox(box_1), 2000);
setTimeout(() => moveBox(box_2), 3700);
setTimeout(() => moveBox(box_3), 4800);

功能解析

  • 获取元素:通过getElementsByClassName获取所有的文本框。
  • moveBox函数:负责将文本框向左移动并再移动到右侧,形成循环。
  • 动画效果:通过setTimeout设置动画的时延,以确保不同文本框的滚动效果不重叠。

总结

通过以上步骤,成功创建了一个动态滚动文本效果,使网页更具吸引力。这个效果可以用于展示信息、提示、或者任何你想要用户注意的内容。希望你能在自己的项目中实现这个功能,欢迎分享你的经验和想法!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电商购物管理系统】Python+Django网页界面平台+商品管理+数据库

一、介绍 电商购物管理系统&#xff0c;本系统前端使用HTML、CSS、BootStrap等技术搭建前端界面&#xff0c;后端使用Django框架处理用户的逻辑请求。主要功能有&#xff1a; 管理员登录与管理&#xff1a;管理员可以登录后台&#xff0c;对用户和商品进行增删改查的操作。用…

使用mybatis查询数据库时,表有数据但是为空值null

前言 数据库有数据但是查出来都是空的 解决方法 这里写错了&#xff0c; resultType只能用在数据库字段和实体类字段一致的情况下&#xff0c;而数据库多单词通常用下划线隔开&#xff0c;不能映射到驼峰命名的实体类属性上&#xff0c;因此得使用一个ResultMap 1.定义映射映…

【C++】set/map(重点解析)

目录 一、关联式容器和序列式容器 二、C中的键值对——pair 1.概念 2.定义 3.构造pair 三.set 1.construct构造 2.iterator迭代器 3.insert插入 4.erase删除 5.find查找 6.lower_bound和upper_bound 7.count 四.multiset 五.map 1.insert 2.operator[] 一、…

Pygame实现音乐可视化

pip install pydub pip install ffmpeg pip install pyaudio 完整代码如下&#xff1a; import pygame,sys import random import numpy as np from random import randint import colorsys from pydub import AudioSegment import mathdef rnd_color(): #随机颜色h,s,l…

Python的reshape的用法和reshape(1,-1)、reshape(-1,1)

在创建DataFrame的时候常常使用reshape来更改数据的列数和行数。 reshape可以用于numpy库里的ndarray和array结构以及pandas库里面的DataFrame和Series结构。 reshape&#xff08;行&#xff0c;列&#xff09;可以根据指定的数值将数据转换为特定的行数和列数&#xff0c;这个…

用SAM2和Cutie模型目标追踪

一、数据集 视频&#xff1a;每个视频文件夹以图片帧的形式存储 box&#xff1a;给出每个视频第一帧要追踪的物体的box 二、将数据格式转换成SAM2所需要的格式 主要是将box转换成mask的格式&#xff0c;下面这个代码就是将box转换成mask的代码&#xff0c;具体转换原理如下…

深圳易图讯科技有限公司承建的厦门应急处突大队三维电子沙盘顺利通过专家验收

近日&#xff0c;深圳易图讯科技有限公司承建的厦门应急处突大队三维电子沙盘系统项目成功通过专家组的严格验收&#xff0c;标志着该系统在应急管理和处置突发事件方面的应用取得了重要突破。 验收过程中&#xff0c;专家组对三维电子沙盘系统的各项功能进行了全面而细致的测试…

第十六周:机器学习笔记

第十六周周报 摘要Abstratc一、机器学习1. Pointer Network&#xff08;指针网络&#xff09;2. 生成式对抗网络&#xff08;Generative Adversarial Networks | GAN&#xff09;——&#xff08;上&#xff09;2.1 Generator&#xff08;生成器&#xff09;2.2 Discriminator&…

Cef加载自定义本地资源

在Cef auto build下载cefCEF Automated Builds 我下载的是104&#xff0c;使用cefsimple工程。 例如&#xff1a;前端资源如下 通过http协议把前端资源加载出来。所有的资源都通过http://local.test.cn/xxx加载。 前端资源包括index.html、test.css、test.js index.html&am…

麒麟系统离线安装英伟达驱动

麒麟系统离线安装英伟达驱动 驱动相关程序下载下载显卡驱动下载CUDA-Toolkit下载cudnn 安装关闭自带图形界面禁用 Nouveau 驱动安装驱动安装CUDA-Toolkit安装cudnn 驱动相关程序下载 下载显卡驱动 进入显卡驱动查询页面&#xff0c;下载对应的显卡驱动&#xff0c;页面如下&a…

第十节:React路由:react-router认识与基本使用

1. React Router的理解 React的路由根据项目的不同使用不同的路由库,web应用主要使用react-router和react-router-dom react-router和react-router-dom的区别 react-rotuer 核心库,提供了一些核心的api,但是没有提供dom操作进行跳转的api react-router-dom扩展了核心库,提供了一…

Edge TTS

edge-tts项目地址&#xff1a;https://github.com/rany2/edge-tts 1.安装部署 在cmd中运行以下命令安装edge-tts pip install edge-tts pip install edge-tts速度非常快&#xff0c;几秒钟就安装完成了。 2.文本转语音 输入以下命令&#xff0c;将一段英文转为音频。 edg…

Linux——传输层协议

目录 一再谈端口号 1端口号范围划分 2两个问题 3理解进程与端口号的关系 二UDP协议 1格式 2特点 3进一步理解 3.1关于UDP报头 3.2关于报文 4基于UDP的应用层协议 三TCP协议 1格式 2TCP基本通信 2.1关于可靠性 2.2TCP通信模式 3超时重传 4连接管理 4.1建立…

RocketMq的学习

1.mq的秒杀场景 2.mq产品的选型

基于SpringBoot的校园兼职管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

solidity中的mapping以及Memory,Storage Calldata

1.Memory&#xff0c;Storage & Calldata 在 Solidity 中&#xff0c;有以下几种数据存储位置&#xff1a; 栈&#xff08;Stack&#xff09;&#xff1a;栈是一种临时存储区域&#xff0c;用于存储局部变量和函数参数。在函数执行期间&#xff0c;栈上的数据会被分配和释…

探索光耦:光耦——电动自行车安全与智能的坚实保障

随着电动自行车市场的蓬勃发展&#xff0c;如何提升其安全性、可靠性和智能化水平已成为行业关注的焦点。在众多关键元件中&#xff0c;光电耦合器&#xff08;简称光耦&#xff09;正以其独特的功能&#xff0c;成为电动自行车设计中的关键角色。下面&#xff0c;让我们一同探…

Ubuntu22.04阿里云服务器 Gitlab搭建CICD

gitlab搭建cicd流水线教程 1、阿里云申请免费云盘 申请免费云盘用于创建gitlab 申请方法百度 2、安装gitlab-ce 更新系统&#xff1a; sudo apt update sudo apt upgrade -y 安装必要的依赖&#xff1a; sudo apt install -y curl openssh-server ca-certificates pos…

【云原生】Helm资源清单管理工具

资源清单管理工具-Helm 文章目录 资源清单管理工具-Helm资源列表基础环境一、Helm的介绍1.1、Helm的价值概述1.2、Helm的关键名词 二、安装部署Helm2.1、解压安装包2.2、添加命令补全设置 三、使用Helm部署服务管理3.1、使用Helm创建chart3.2、响应式创建名称空间3.3、安装char…

基于Arduino的植物状态监测系统

Arduino植物监测/浇水系统 本项目的3D打印及源码开源&#xff0c;可以私信我进行获取 简介 大家好&#xff0c;今天我将向大家介绍一个非常有趣的项目——Arduino植物监测/浇水系统。这个项目利用一些传感器来观察土壤的状况&#xff0c;并根据这些读数来判断植物是否需要浇…