51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

html中实现文字滚动的两种方式

网页中时常能看到文字滚动的效果,尤其是在网页的广告中,下面记两种实现的方法 {#toc_0}


第一种 {#toc_1}

使用marquee标签实现

marquee标签是html中的默认标签,但是在html5中已被取消,虽然还有部分浏览器支持这个标签,但是现在这个标签是不被推荐使用的(据说是因为其会造成啥子问题)marquee标签中有direction属性可以设置滚动方向,scrollamount属性设置滚动速度

    <html>
    <head>
    <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>滚动字幕</title>
    </head>
    <body>
    <script>

      function ColorGetFn(dom){         document.getElementById('colorInput').value = dom.value; 
        document.getElementById("gun").style.color=dom.value;
        
    } 
    function ColorInputFn(dom){ 
        document.getElementById('colorGet').value = dom.value;
        document.getElementById("gun").style.color=dom.value;
    }
    function BgColorGetFn(dom){ 
        document.getElementById('colorInput').value = dom.value; 
        document.getElementById("gun").style.background=dom.value;
        
    } 
    function BgColorInputFn(dom){ 
        document.getElementById('colorGet').value = dom.value;
        document.getElementById("gun").style.background=dom.value;
    }
    function TextInput(dom){
      var txt = dom.value;
      document.getElementById("gun").innerHTML=txt;
    }
    &lt;/script&gt;
    &lt;style&gt;
    *{margin:0;}
    marquee{
      background:#000;
      color:#fff;
      font-size:180px;
      width:100%;
      height:350px;
      }
    form{
      margin-top:50px;
      margin-left:20px;
      }
    &lt;/style&gt;
    &lt;marquee id="gun" scrollamount="15"&gt;这是预览文本&lt;/marquee&gt;
    &lt;p align="center"&gt;以上是效果预览&lt;/p&gt;
    &lt;form&gt;
    &lt;label&gt;请输入文本&lt;/label&gt;
    &lt;input placeholder="输入完点击空白处生效" id="in" onchange="TextInput(this)"&gt;&lt;br&gt;
    &lt;br&gt;
    &lt;label id="test"&gt;文字颜色选择:&lt;/label&gt; 
    &lt;input type="color" id="colorGet" onchange="ColorGetFn(this)"&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;
    &lt;br&gt;
    &lt;label&gt;颜色编码:&lt;/label&gt;
    &lt;input type="text" id="colorInput" onchange="ColorInputFn(this)" value="#fff"&gt; &lt;br&gt;
     &lt;label&gt;(输入#fff是白色,输入#000是黑色!)&lt;/label&gt;
     &lt;br&gt;&lt;br&gt;
    &lt;label id="test"&gt;背景颜色选择:&lt;/label&gt; 
    &lt;input type="color" id="colorGet" onchange="BgColorGetFn(this)"&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;
    &lt;br&gt;
    &lt;label&gt;颜色编码:
    &lt;input type="text" id="colorInput" onchange="BgColorInputFn(this)" value="#fff"&gt; &lt;br&gt;
     (输入#fff是白色,输入#000是黑色!)        &lt;/label&gt;
    &lt;/form&gt;

    &lt;/body&gt;
    &lt;/html&gt;</code></pre>



 
效果图:


 https://s2.ax1x.com/2020/02/12/1bGgsK.jpg#vwid=1080&vhei=2340
  
   1bGgsK.jpg
  
 
 
<br />



 
### 第二种 {#toc_2}


 
使用js实现

 
>   使用js使用的主要思路是在一个div标签中添加一个span标签,span标签使用绝对定位的方式确定位置,通过js改变span标签与div标签的左边距来实现文字向左活动
>
>  

 
```lang-html
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>滚动字幕</title>
    <style>
        *{
          padding:0;
          margin:0;
          }
        #marquee {
            color: white;
            font-size:300px;
            display: block;
            width: 100%;
            height: 500px;
            margin: 0 auto;
            position: relative;
            overflow: hidden;
            background:#000;
        }

        #marquee_text {
            position: absolute;
            height:100%;
            top:auto;
            left: 100%;
            line-height: auto;
            display: block;
            word-break: keep-all;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
      #in{
        width:100%;
        height:200px;
        font-size:100px;
       }
     #col{
       width:50%;
       height:100px;
     }
     .sp{
     font-size:50px;
     }
    &lt;/style&gt;
    &lt;/head&gt;

    &lt;body&gt;
    &lt;div id="marquee"&gt;
    &lt;span id="marquee_text"&gt;这是默认样式哦&lt;/span&gt;
    &lt;/div&gt;
    &lt;input type="text" placeholder="请输入要滚动的文字" id="in" onchange="TextInput(this)"&gt;&lt;br&gt;
    &lt;span class="sp"&gt;请选择字体颜色&lt;/span&gt;
    &lt;input type="color" id="col" onchange="ColorChange(this)"&gt;&lt;br&gt;
    &lt;span class="sp"&gt;请选择背景颜色&lt;/span&gt;
    &lt;input type="color" id="col" onchange="BgColorChange(this)"&gt;
    &lt;/body&gt;
    &lt;script type="text/javascript"&gt;
    function TextInput(dom){
      var txt = dom.value;
        document.getElementById("marquee_text").innerHTML=txt;
    }
    function ColorChange(dom){
       document.getElementById("marquee_text").style.color = dom.value;
    }
    function BgColorChange(dom){
       document.getElementById("marquee").style.background = dom.value;
    }
    marquee("marquee", "marquee_text");
    function marquee(p, s) {
        var scrollWidth = document.getElementById(p).offsetWidth;
        var textWidth = document.getElementById(s).offsetWidth;
        var i = scrollWidth;
        console.log(scrollWidth, textWidth);
        function change() {
            i=i-5;
         
            if (i &lt; -textWidth) {
                i = scrollWidth;
            }
            document.getElementById(s).style.left = i + "px";
            window.requestAnimationFrame(change);
        }
        window.requestAnimationFrame(change);
    }

    &lt;/script&gt;
    &lt;/html&gt;</code></pre>



 
效果图:


 https://s2.ax1x.com/2020/02/12/1bGmKf.jpg#vwid=1080&vhei=2340
  
   1bGmKf.jpg
  
 
 
<br />




```

赞(1)
未经允许不得转载:工具盒子 » html中实现文字滚动的两种方式