javascript实现文字跑马灯效果

一、实现思路:

1.先利用HTML搭建好文字容器和跑马灯容器结构;

2.利用CSS对文字容器进行相应的样式设置,并将跑马灯容器设置为具有固定宽度和溢出隐藏,再将文字容器放置在跑马灯容器中;

3.利用JavaScript开发跑马灯功能,在JavaScript中,通过定时器和相关的DOM操作,实现文字容器在跑马灯容器中持续向左移动的效果。

二、示例代码:

示例1:

<!-- HTML结构 -->
<div class="marquee-box">
  <div class="text-banner">
    <span class="text-item">第一条消息</span> 
    <span class="text-item">第二条消息</span> 
    <span class="text-item">第三条消息</span> 
    <span class="text-item">第四条消息</span> 
  </div>
</div>

/* CSS样式 */
.marquee-box {
  width: 300px;
  height: 30px;
  overflow: hidden;
  border: 1px solid #ddd;
}

.text-banner {
  white-space: nowrap;
  position: relative;
  z-index: 1;
  overflow: hidden;
}

.text-item {
  display: inline-block;
  padding: 0 10px;
}

/* JavaScript实现 */
//取出容器和文本元素
const marqueeBox = document.querySelector('.marquee-box');
const textBanner = document.querySelector('.text-banner');
const textItem = document.querySelectorAll('.text-item');

//定义移动位置
let times = 0;

//克隆文本元素
for(let i = 0; i < textItem.length; i++){
  const cloneItem = textItem[i].cloneNode(true);
  textBanner.appendChild(cloneItem);
}

//开启定时器
const marquee = setInterval(function(){
  times += 1;
  textBanner.style.left = -times + 'px';
  if(times >= textBanner.offsetWidth){
    times = 0;
  }
}, 20);

//鼠标悬停时清除定时器
marqueeBox.addEventListener('mouseover', function(){
  clearInterval(marquee);
});

//鼠标移开时开启定时器
marqueeBox.addEventListener('mouseout', function(){
  marquee = setInterval(function(){
    times += 1;
    textBanner.style.left = -times + 'px';
    if(times >= textBanner.offsetWidth){
      times = 0;
    }
  }, 20);
});

示例2:

<!-- HTML结构 -->
<div class="marquee-box">
  <div class="text-banner">
    <ul class="text-list">
      <li class="text-item">第一条消息</li>
      <li class="text-item">第二条消息</li>
      <li class="text-item">第三条消息</li>
      <li class="text-item">第四条消息</li>
    </ul>
  </div>
</div>

/* CSS样式 */
.marquee-box {
  width: 300px;
  height: 30px;
  overflow: hidden;
  border: 1px solid #ddd;
}

.text-banner {
  white-space: nowrap;
  position: relative;
  z-index: 1;
  overflow: hidden;
}

.text-list {
  display: inline-block;
  margin: 0;
  padding: 0;
}

.text-item {
  display: inline-block;
  padding: 0 10px;
}

/* JavaScript实现 */
//取出容器和文本元素
const marqueeBox = document.querySelector('.marquee-box');
const textBanner = document.querySelector('.text-banner');
const textList = document.querySelector('.text-list');
const textItem = document.querySelectorAll('.text-item');

//定义移动位置
let times = 0;

//克隆文本元素并拼接
for(let i = 0; i < textItem.length; i++){
  const cloneItem = textItem[i].cloneNode(true);
  textList.appendChild(cloneItem);
}

textBanner.appendChild(textList);

//开启定时器
const marquee = setInterval(function(){
  times += 1;
  textBanner.style.left = -times + 'px';
  if(times >= textList.offsetWidth){
    times = 0;
  }
}, 20);

//鼠标悬停时清除定时器
marqueeBox.addEventListener('mouseover', function(){
  clearInterval(marquee);
});

//鼠标移开时开启定时器
marqueeBox.addEventListener('mouseout', function(){
  marquee = setInterval(function(){
    times += 1;
    textBanner.style.left = -times + 'px';
    if(times >= textList.offsetWidth){
      times = 0;
    }
  }, 20);
});

以上是JavaScript实现文字跑马灯效果的详细攻略,其中示例1使用的是标签实现,示例2使用的是

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

相关文章

  • JavaScript严格模式

    JavaScript严格模式是一种JavaScript的语言模式,它具有更严格的语法规则和更加安全的行为。使用严格模式可以更早地检测出代码错误,并防止一些常见的JavaScript陷阱。在本文中,我们将深入探讨JavaScript严格模式,介绍它的用法、优势和限制,并提供代码示例。 1.使用严格模式 启用JavaScript严格模式的方法很简单:只需要在代码…

    Web开发基础 2023年3月30日
    00
  • javascript之函数进阶详解

    JavaScript之函数进阶详解 函数的三种表现形式 JavaScript中的函数有三种表现形式:函数声明、函数表达式和箭头函数。其中,函数声明和函数表达式是最常见的形式。 函数声明 函数声明语法如下: function functionName(parameter1, parameter2, …parameterN) { // function bo…

    JavaScript 2023年5月18日
    00
  • 一文让你彻底弄懂js中undefined和null的区别

    一文让你彻底弄懂js中undefined和null的区别 在 JavaScript 中,undefined 和 null 都代表着一种空值。但是它们是有区别的,接下来我们就以具体实例为例逐一讲解它们之间的差异。 undefined JavaScript 中,当一个变量被声明未赋值时,它的值就是 undefined。 let a; console.log(a)…

    JavaScript 2023年6月11日
    00
  • JavaScript的学习入门整理篇第1/3页

    以下是详细讲解“JavaScript的学习入门整理篇第1/3页”的完整攻略: 1. 确定学习目标 在学习JavaScript之前,我们首先需要明确自己的学习目标,比如想要学习JavaScript的基础语法,还是想要深入掌握JavaScript的高级特性。只有明确了学习目标,才能有针对性地学习。 2. 学习环境搭建 在进行JavaScript学习之前,我们需要…

    JavaScript 2023年5月27日
    00
  • 浅谈JavaScript宏任务和微任务执行顺序

    浅谈JavaScript宏任务和微任务执行顺序 在 JavaScript 中,任务被分为 宏任务(macrotask)和 微任务(microtask)。而在 JavaScript 中,事件循环(event loop)来负责管理和执行这些任务。 宏任务(macrotask) 宏任务是 JavaScript 中较为常见的任务类型,包括以下几种: 脚本本身; 用户…

    JavaScript 2023年6月11日
    00
  • JavaScript中0、空字符串、’0’是true还是false的知识点分享

    当JavaScript中使用布尔类型时,0、空字符串、’0’三者在布尔类型中都代表false。但是在某些场景下,它们会被解释成true。下面是关于这些场景的详细讲解: 0 在JavaScript中,数字0代表false。但是,在进行逻辑非操作符“!”运算时,0会被解释成true,因为它不是布尔类型,而是数值类型。例如: console.log(!0) // …

    JavaScript 2023年5月28日
    00
  • json获取数据库的信息在前端页面显示方法

    Sure! 在前端页面中展示数据库的数据是很常见的需求。其中一种常用的方式是利用JSON来获取数据库中的信息,然后在前端页面中渲染JSON数据来显示信息。 下面是使用JSON在前端页面中显示数据库信息的一些步骤: Step 1: 从后端获取JSON数据 要在前端页面中显示数据库的信息,首先需要从后端获取这些信息,通常情况下,会发送 GET 请求到后端 API…

    JavaScript 2023年6月11日
    00
  • JavaScript 正则表达式使用详细参数

    下面是关于“JavaScript 正则表达式使用详细参数”的完整攻略。 正则表达式 正则表达式可以用来匹配符合某个模式的文本。在 JavaScript 中,可以使用 RegExp 对象来创建正则表达式。 RegExp 对象的创建 在 JavaScript 中,可以使用以下两种方式来创建一个正则表达式: 字面量方式 javascript let regExp …

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