首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现div跑马灯

基础概念

跑马灯(Marquee)是一种常见的网页效果,用于在页面上循环滚动显示文本或图像。通过JavaScript可以实现更加灵活和动态的跑马灯效果。

优势

  1. 吸引注意力:动态内容更容易吸引用户的注意力。
  2. 信息展示:适合展示新闻、公告等重要信息。
  3. 节省空间:可以在有限的空间内展示更多内容。

类型

  • 水平滚动:内容从左到右或从右到左滚动。
  • 垂直滚动:内容从上到下或从下到上滚动。
  • 多行滚动:多行文本同时滚动。

应用场景

  • 新闻网站:实时更新的新闻标题。
  • 广告牌:商场或公共场所的信息展示。
  • 社交媒体:动态更新的帖子摘要。

实现方法

以下是一个简单的JavaScript实现水平滚动跑马灯的示例:

HTML

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>跑马灯示例</title>
    <style>
        #marquee {
            width: 100%;
            overflow: hidden;
            white-space: nowrap;
            position: relative;
        }
        #marquee span {
            display: inline-block;
            padding-left: 100%;
            animation: marquee 15s linear infinite;
        }
        @keyframes marquee {
            0% { transform: translateX(0); }
            100% { transform: translateX(-100%); }
        }
    </style>
</head>
<body>
    <div id="marquee">
        <span>这是一个跑马灯效果的示例。欢迎来到这里!</span>
    </div>
</body>
</html>

JavaScript

代码语言:txt
复制
document.addEventListener("DOMContentLoaded", function() {
    const marquee = document.getElementById('marquee');
    const content = marquee.querySelector('span');
    const contentWidth = content.offsetWidth;
    const marqueeWidth = marquee.offsetWidth;

    // 复制内容以实现无缝滚动
    content.innerHTML += ' ' + content.innerHTML;

    // 调整动画时间以适应内容长度
    const duration = (contentWidth / marqueeWidth) * 15; // 15秒为基础时间
    content.style.animationDuration = `${duration}s`;
});

可能遇到的问题及解决方法

  1. 滚动不流畅
    • 原因:可能是由于页面其他元素的渲染阻塞了主线程。
    • 解决方法:优化CSS和JavaScript,减少重绘和回流,使用requestAnimationFrame进行动画控制。
  • 内容溢出
    • 原因:内容长度超过了容器宽度。
    • 解决方法:确保容器宽度足够大,或者动态调整内容的显示长度。
  • 动画停止
    • 原因:可能是由于JavaScript错误或者浏览器兼容性问题。
    • 解决方法:检查控制台是否有错误信息,确保所有元素和样式都正确加载和应用。

通过以上方法,可以实现一个简单且高效的跑马灯效果。如果需要更复杂的功能,可以进一步扩展和优化代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 分别用Js和vue实现跑马灯效果

    文章目录 一、使用js实现 二、使用vue实现 跑马灯就是这条信息串首尾相连,向一个方向循环滚动。。。...一、使用js实现 实现逻辑: ① 根据id值获取标签 ② 获取标签的文本内容 ③ 截取文本内容的第一个字 ④ 截取文本内容第一个字后面的所有内容 ⑤ 把第③步截取的第一个字拼接到第④步截取的文本内容后面...实现跑马灯效果 .btn-start { text-align: center; color: white.../jquery.js"> div id="str">欢迎访问TwcatL的博客!!!...在上面的跑马灯效果中,当打开页面的时候,等待两秒钟,它会自动调用start方法,实现动起来的效果。 ② setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

    1.7K10

    js动态添加div

    准备好, 添加到内容div中的第一个 点击每行的添加 将div添加到当前点击行后面一个 点击每行删除 删除当前div 实现 基本思路很简单, 只要在每个点击按钮上添加对应的点击事件, 将结果封装成类....我在封装的时候喜欢先想用的时候怎么用, 然后根据这个思路来想应该怎么封装, 思考如下 因为添加的div肯定是不同的, 是需要传的参数, 但是如果直接传div字符串也太丑了, 应该在页面直接写HTML,...添加成功后需要有个回调函数, 我得做些收尾的工作 最好有这两个参数就可以直接运行 开始码代码了: 在创建的时候接收参数, 大部分参数都有默认值, 也就是说, 按照默认值来看, 一个参数都不需要 当前实现还很简陋..., 代码放在码云上, 发现问题再更新, 下载后可以直接运行demo文件 https://gitee.com/hujingnb/addDivItem 下面是当前的简单实现, 要看最新代码请移步码云, 欢迎提出问题...'] || 'content_div_id'; var exampleDivId = params['example_div_id'] || 'example_div_id'; var

    24.5K40

    Android TextView实现跑马灯

    Android TextView实现跑马灯 一、使用TextView属性来实现 1.布局文件 <TextView android:id="@+id/tvNotice"...true); // 获取焦点 tvContent.setFocusableInTouchMode(true); tvContent.requestFocus(); 二、使用自定义View实现...android:textSize="24sp" android:visibility="visible" /> 3.属性介绍 marqueeRepeatLimit 表示跑马灯循环的次数...: 第一种方式采用原生控件来实现,但是存在要在Activity中要获取焦点,我们知道Activity中当前只有一个View控件能获取焦点,这样存在的问题是如果我们的页面中有一个默认要获取焦点的EditText...控件时,这样就有问题了,但是方法二就不存在这样的问题,因此,个人偏向于第二种实现的方式,更加灵活,后续也可增加速度等实现个性化的定制。

    1.6K20

    HarmonyOS实战—实现跑马灯效果

    Text文本框展示大段内容文字 文本中展示大段文字,除了这种方式之外,还有其他方式 [在这里插入图片描述] 可以使用跑马灯的形式展示,但需要两个前提条件,如下: 下面两个都是默认属性,也可以省略不写 [...实现案例 新建项目:TextLargeApplication ability_main <?xml version="1.0" encoding="utf-8"?...(Text) findComponentById(ResourceTable.Id_text1); //2.给Text文本添加单击事件 //表示当单击一下的时候,开启跑马灯效果...两种方式获取文本的对象 //1.方法的参数,参数表示被点击组件的对象 //2.可以把 onStart 方法中的Text对象,挪到成员位置 //使用第一种方法实现...: //先强转,因为开启跑马灯的方法不是父类component里的方法,而是Text文本里的方法 //所以,把component强转为Text Text

    1.2K00

    js实现贝塞尔曲线,div也能如此丝滑?

    今天遇到朋友发来的一个ui图,询问我如何实现下图这样的效果【vue项目】,(听说是类似LED灯的展示效果),于是便有了今天的小demo,要实现一个类似下图的动效,上面的灯会一直重复滚动,但是这个并不是什么难点...,主要在于如何实现这种平滑的曲线,日常我们的开发的div在我们的脑海中通常就是一个网格状,涉及到平滑曲线的往往是图表,于是我们需要找一个方案来完成这种布局(非真实ui图,是完成之后的效果) 分析 我们需要先简单分析一下这个...实现 布局 实现这个的布局非常简单,外层一个大的div,内层很多小的span,通过flex一排即可到一排 div class="container"> div class...此时我们的曲线就已经完成了,所以其实是不是就是我们的高中数学知识呢 完成跑马灯制作 前面的曲线画完,后面就已经不难了,我们只需要定义一段高亮的下标数组,我们写一个方法,创建一个自己想要高亮几个就生成0-...但是实际上我们所需要的其实只是利用真实的x点,拿到对应曲线求出我们y的坐标,所以我们需要的参数有,我们真实场景的总宽,总宽之中的个数,我们所需要的曲线的倍率,三个参数即可,我们尽量分开步骤写,这样你看会理解的更清楚 js

    1.7K40

    实践-跑马灯效果及实现过程解析

    前言 最近闲来无事,把自己之前做的一款跑马灯效果做个总结,也算温习了一下相关的知识。 效果 跑.gif 实现过程 设置一个背景ViewA,背景的左右两端加上正方形的颜色渐变的图层。...渐变图层 #以下是渐变图层的实现方法 CAGradientLayer *la = [[CAGradientLayer alloc]init]; la.frame = gradientView.bounds...[self.marqueeLbl.layer addAnimation:moveAnim forKey:nil]; } 暂停、重新开始动画 #CALayer通过CAMediaTiming协议实现了一个有层级关系的时间系统...#除了CALayer,CAAnimation也采纳了此协议,用来实现动画的时间系统....#在CA中,有一个Absolute Time(绝对时间)的概念,可以通过CACurrentMediaTime()获得, #就和座标存在相对座标一样,不同的实现了CAMediaTiming协议的存在层级关系的对象也存在相对时间

    1.1K21

    js实现键盘操作对div的移动或改变——-Day43

    言归正传,继续今天的记录,实际上在刚開始的时候,我以为能够非常快的实现这个功能,毕竟昨天记录了获取键盘按键的值的事件,有了值,无非就是针对不同值做不同的操作嘛,并且之前以前在写贪吃蛇时也用到过。...结果一捯饬,又是好久的一段时间,所以感觉有必要记录下的,一方面确有可取之处,还有一方面也对自己的提醒,刚刚实现过的功能转头又是陌生人了,总的来说,算是温故而知新吧。...这样我们先来分析,要实现键盘操作实现div的移动大概的原理吧: *—要实现div的移动,首先最关键的一点:获取div对象 *—postion:absolute将div全然从文档流中拖出啊,这个地方漏掉了...,回去看了贪吃蛇才发现的,真晕 *—获取键盘的操作 *—依据键盘的不同操作,给出不同响应 这就是我想起的大概须要注意的地方,还是先来看代码: 先是html部分 div style="width...div的上下左右移动了,接下来,再来记录下敏感地方吧。

    4.3K10
    领券