彩虹滚动文本使用<span>



我想把一个小段落变成彩虹文本,其中颜色在使用JavaScript的无限循环中从右到左滚动。我现在有这个段落:

<div id="rainbow">
  <p id="rtext">
    <span id="s1" style="color: red">H</span>
    <span id="s2" style="color: blue">e</span>
    <span id="s3" style="color: green">l</span>
    <span id="s4" style="color: purple">l</span>
    <span id="s5" style="color: orange">o</span>
    <span id="s6" style="color: magenta">!</span>
  </p>
</div>
<div id="actbtn">
    <button onclick="activ()">Click for RAINBOW!</button>
</div>`

我对JavaScript相当陌生,所以我不确定如何编写activ()函数来无限滚动颜色。

编辑:我想感谢Ben的循环脚本,但现在我还需要知道如何使用activ()函数来改变<span>元素的颜色。我尝试了以下脚本:function activ() { document.getElementById("s1").style.color = 'magenta'; }但是颜色不会变。我试图保持脚本尽可能简单,但也使其工作。

最后的编辑:我使用了Ivan的"UPD Without JQuery"代码并添加了一些颜色,这就是我最终的结果:

<script>
function EyeVommit() {
    document.getElementById("actbtn").style.display = 'none';
    'use strict';
    var colors = ['red', 'blue', 'green', 'purple', 'orange', 'magenta', 'chartreuse', 'cyan', 'yellow'],
        target = document.getElementById('rtext').children,
        i,
        len = colors.length,
        inter = setInterval(function() {
            colors.unshift(colors.pop());
            for (i = 0; i < len; i++) {
                target[i].style.color = colors[i];
            }
        }, 200);
}
</script>
<div id="table1">
<p id="rtext"> <span id="s1">H</span><span id="s2">e</span><span id="s3">l</span><span  id="s4">l</span><span id="s5">o</span><span id="s6">!</span>
    <br />
    <div id="actbtn">
        <button onclick="EyeVommit()">Pabam!</button>
    </div>
</p>

结果。

我求求你,千万,千万,千万不要在设计中使用它

<html>
    <head>
        <title>Price</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    </head>
    <body>
<script>
    function EyeVommit() {
        'use strict';
        var colors = ['red', 'blue', 'green', 'purple', 'orange', 'magenta'],
            $target = $('#rtext span'),
            counter,
            i,
            len = colors.length,
            inter;
            for (i = 0; i < len; i++) {
                $target[i] = $($target[i]);
            }
            inter = setInterval(function () {
                colors.unshift(colors.pop());
                for (i = 0; i < len; i++) {
                    $target[i].css('color', colors[i]);
                }
            }, 200);
    }
</script>
<div id="table1">
    <p id="rtext">
        <span id="s1">H</span>
        <span id="s2">e</span>
        <span id="s3">l</span>
        <span id="s4">l</span>
        <span id="s5">o</span>
        <span id="s6">!</span>
    </p>
</div>
<script>
EyeVommit();
</script>
    </body>
</html>

不使用jQuery的UPD

<script>
    function EyeVommit() {
        'use strict';
        var colors = ['red', 'blue', 'green', 'purple', 'orange', 'magenta'],
            target = document.getElementById('rtext').children,
            i,
            len = colors.length,
            inter = setInterval(function () {
                colors.unshift(colors.pop());
                for (i = 0; i < len; i++) {
                    target[i].style.color = colors[i];
                }
            }, 200);
    }
</script>
<div id="table1">
    <p id="rtext">
        <span id="s1">H</span><span id="s2">e</span><span id="s3">l</span><span id="s4">l</span><span id="s5">o</span><span id="s6">!</span>
        <button onclick="EyeVommit()">Pabam!</button>
    </p>
</div>

如果你说的"无限滚动"是指创建一个无限循环,你可以这样做。

function blaah(blaah){
//This is where you put all of your rainbow-y code
blaah("blaah");
}

然后你可以通过你的按钮调用事件。

这段代码之所以有效,是因为每次函数运行时,您都会再次调用它。(函数的倒数第二行)

这是一个适用于任何你放在rtext块中的文本

这是一个代码依赖:http://codepen.io/anon/pen/GtwxD

这是HTML

<div id="rainbow">
<p id="rtext">Hello! This is some rainbow text!</p>
</div>
<div id="actbtn">
<button>Click for RAINBOW!</button>
</div>

这是Javascript

$(document).ready(function(){
  createSpans();
  $('#actbtn').click(activ);
});
$rtxt = $('#rtext');
var text = $rtxt.html() , color;
function createSpans(){
  $rtxt.html(' ');
  window.colorCount = 0;
  window.on = false;
  colorPicker();
}
function activ(){
  if(!window.on){
        window.id = setInterval(colorPicker,100);
    window.on = true;
  }
  else{
    clearInterval(window.id);
    window.on = false;
  }
}
function colorPicker(){
  $rtxt.html(' ');
  window.colorCount++;
  for(var letter = 0; letter < text.length; letter++){
    switch ((letter + colorCount) % 6){
        case 0 : 
        color = "red";
        break;
      case 1 : 
        color = "orange";
        break;
      case 2:
        color = "green";
        break;
      case 3 :
        color = "purple";
        break;
      case 4 :
        color = "blue";
        break;
      case 5 :
        color = "gold";
        break;
      default : 
        color = "black";
        break;
    }
    $rtxt.append('<span style=" color:' + color + ';">' + text[letter] + '</span>');
  }
}

相关内容

最新更新