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提供了丰富多样的事件类型,例如点击事件、鼠标滚轮事件、键盘事件等。 如何给元素绑定事件? 可以调用元素的addEventListener方法来为其绑定事件。例如给按钮绑定点击事件:…

    JavaScript 2023年5月27日
    00
  • 详解TypeScript映射类型和更好的字面量类型推断

    让我来详细解释一下TypeScript映射类型和更好的字面量类型推断的攻略。 介绍 TypeScript是一个由微软开发的开源编程语言,它是JavaScript的超集,为大型和复杂的代码库带来了静态类型检查。 在TypeScript中,部分机制和语法是我们所熟知的,如泛型、枚举、接口等。但在该语言的版本更新中,还加入了另一个非常有用的特性——映射类型。 在本…

    JavaScript 2023年6月10日
    00
  • asp.net gridview分页:第一页 下一页 1 2 3 4 上一页 最末页

    当我们需要在asp.net网站中实现数据分页展示的功能时,可以使用GridView控件来实现。下面是实现asp.net GridView 分页展示的完整攻略。 安装PagedList.Mvc 我们可以通过Nuget安装PagedList.Mvc,在Manage NuGet Packages界面搜索PagedList.Mvc进行安装。这是一个非常常用的分页库,…

    JavaScript 2023年6月11日
    00
  • 魔鬼字典 JavaScript 笔记 代码比较多乱第2/3页

    首先,需要明确的是,“魔鬼字典 JavaScript 笔记 代码比较多乱第2/3页”是一个博客文章,关于JavaScript代码笔记的一些总结和整理。 这篇博客包含了JavaScript的基础知识、常用的数据类型、流程控制语句、函数定义和数组对象等内容。全文分为多个章节,包含了大量的JavaScript代码,对于初学者来说可能有些难以理解。 攻略: 阅读博客…

    JavaScript 2023年6月10日
    00
  • JavaScript中Array.from()的超全用法详解

    JavaScript中Array.from()的超全用法详解 什么是Array.from() Array.from()是ECMAScript6中新增的一个方法,可以将类数组对象和可迭代对象(如Set、Map)转换成真正的数组,方便对数据进行操作。 Array.from()的语法结构 Array.from(iterable[, mapFn[, thisArg]…

    JavaScript 2023年5月27日
    00
  • js中的异常处理try…catch使用介绍

    下面是“JS中的异常处理try…catch使用介绍”的完整攻略。 概述 JavaScript 中的异常处理是许多开发者经常会遇到的问题,特别是在复杂、大型的应用程序中。如果没有适当的异常处理,运行时的错误可能会导致应用程序的崩溃,这对于用户来说是非常糟糕的体验。在 JavaScript 语言中,可以通过 try…catch 语句块来保护我们的程序如果…

    JavaScript 2023年5月28日
    00
  • JavaScript字符串转数字的5种方法及遇到的坑

    让我来为你详细讲解JavaScript字符串转数字的5种方法及遇到的坑。 为什么需要字符串转数字? 在日常的JavaScript编程中,我们经常需要将字符串类型的数据转换为数字类型。例如,从用户输入的表单中获取数值,并将其用于数学运算中。 JavaScript字符串转数字的5种方法 parseInt() parseInt() 方法可以将字符串转换为整数。它接…

    JavaScript 2023年5月28日
    00
  • JS获取当前时间的实例代码(昨天、今天、明天)

    获取当前时间是JavaScript中比较基础的内容,可以通过Date对象的方法获取到当前的时间、日期等信息。对于“昨天、今天、明天”的需求,可以在获取当前时间的基础上,通过一些计算方法实现。 以下是获取当前时间及计算“昨天、今天、明天”的示例代码: 获取当前时间的实例代码 const now = new Date(); // 创建一个Date对象,获取当前时…

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