如何用js实现跑马灯形式的横向字幕滚动

<div class="test">中奖名单:XXXX,yyyyy,zzzzz</div>
请问一下如何实现跑马灯形式的横向字幕滚动?

阅读 6.1k
6 个回答
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Css跑马灯</title>
    <style>
        div, p{
            margin: 0;
            padding: 0;
        }
        .box{
            position: relative;
            width: 300px;
            height: 200px;
            border: 5px solid #aaa;
            margin: 0 auto;
            overflow: hidden;
        }
        .box .text{
            position: absolute;
            left: 300px;
            top: 0;
            height: 200px;
            line-height: 200px;
            font-size: 100px;
            white-space:nowrap;
            animation: slidein 5s linear 0s infinite running;/* 5s决定跑马灯一次滚动的时长,自己调整 */
        }
        @keyframes slidein {
            from { 
                transform: translateX(300px); /* 盒子宽度 */
            }
            to { 
                transform: translateX(-1150px);/* 平移距离 = 文案标签长度 + 盒子宽度 */
            }
        }
    </style>
</head>
<body>
    <div class="box">
        <p class="text">
            这是一个css跑马灯
        </p>
    </div>
</body>
</html>

最简单的

<div class="test"><marquee>中奖名单:XXXX,yyyyy,zzzzz</marquee></div>

或者
js定时器控制div位置位移

<style>
  #test15645{
    display: inline-block;
    padding: 5px 10px;
    background:red;
    color:#fff;
  }
</style>
<div id="test15645"></div>
<script>
  function demo (el, msg) {
    el.innerHTML = msg
    var timer = setInterval(function () {
      msg = msg.substring(1) + msg.substr(0, 1)
      el.innerHTML = msg
    }, 150)
  }

  demo(document.getElementById('test15645'), '欢迎使用XXX示例,这只是测试数据!')
</script>

<marqueen></marqueen>这么好用咋不用

marquee MDN 文档说是已经废弃的了,不要使用为好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题