javascript实现文字跑马灯效果

yizhihongxing

一、实现思路:

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日

相关文章

  • ES6 Class中实现私有属性的一些方法总结

    下面是关于“ES6 Class中实现私有属性的一些方法总结”的完整攻略: 1. 私有属性的概念 在ES6的Class中,私有属性是指只能在类内部访问,而无法在类外部访问的属性。目前,ES6并不支持直接定义私有属性,但是可以通过一些方法实现类似于私有属性的效果。 2. 实现私有属性的方法 以下是几种实现私有属性的方法: 2.1 在构造函数中定义私有属性 这种方…

    JavaScript 2023年6月10日
    00
  • JS实现弹出下载对话框及常见文件类型的下载

    JS实现弹出下载对话框及常见文件类型的下载的完整攻略如下: 步骤一:创建下载链接 我们需要创建一个下载链接(<a>标签),指定文件的下载地址、文件名和文件类型,代码如下所示: <a id="download-link" href="download.pdf" download="docume…

    JavaScript 2023年5月19日
    00
  • javascript中的正则表达式使用详解

    JavaScript中的正则表达式使用详解 正则表达式是对字符串模式匹配和处理的工具,它广泛应用于文本处理、搜索、替换等场景中。JavaScript中可以通过RegExp对象来创建正则表达式。本文将从以下几个方面详细讲解JavaScript中的正则表达式的使用。 创建正则表达式 在JavaScript中,有两种方式来创建一个正则表达式。 字面量语法创建正则表…

    JavaScript 2023年6月10日
    00
  • Js+Ajax,Get和Post在使用上的区别小结

    当我们使用 JavaScript 和 Ajax 发送请求到服务器时,我们通常会使用 GET 和 POST 方法。虽然它们都用于发送 HTTP 请求,但它们在实现和用法上是不同的。以下是它们之间的区别: GET 方法 GET 方法是一种在查询字符串中传递参数的 HTTP 请求方法,它通过 URL 发送数据到服务器。这意味着通过 GET 发送的请求,请求的数据可…

    JavaScript 2023年6月11日
    00
  • Javascript toExponential 方法

    JavaScript 中的 toExponential() 方法用于将数字转换为指数形式的字符串。该方法返回一个字符串,其中包含指数形式的数字,可以指定小数点后的位数和指数的位数。在本教程中,我们将详细介绍 toExponential() 方法的使用方法。 toExponential() 方法的基本语法如下: number.toExponential(fra…

    JavaScript 2023年5月11日
    00
  • Android webview与js交换JSON对象数据示例

    为了让大家更好地理解“Android webview与js交换JSON对象数据”的过程,我将详细讲解一下: 1. 什么是Android WebView Android WebView是一个使用Android内置WebKit引擎实现的组件,可以让开发者在Android应用程序中嵌入Web页面。 它提供了多种方法来加载HTML内容,包括从Web服务器加载内容,也…

    JavaScript 2023年5月27日
    00
  • 自制的文件上传JS控件可支持IE、chrome、firefox etc

    实现自制的文件上传JS控件,需要分为以下几个步骤: 第一步:定义HTML结构 首先,我们需要定义HTML结构,提供上传文件的按钮,显示上传进度的进度条以及文件选择框的位置。 <div id="upload-box"> <input type="file" name="file" i…

    JavaScript 2023年5月27日
    00
  • 体验js中splice()的强大(插入、删除或替换数组的元素)

    下面详细讲解一下“体验js中splice()的强大(插入、删除或替换数组的元素)”的攻略: 1. 什么是splice() splice()是JavaScript中的一个数组方法,可以在数组中插入、删除或替换元素。它有三个参数,分别是: start:操作开始的索引位置; deleteCount:要删除的元素个数; items:要插入到数组中的元素。 其中,st…

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