题解 | #文字输出#

文字输出

https://www.nowcoder.com/practice/b403d1051e5d4568912e6d265e1e2cde

注意审题,有一些小陷阱

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
       html, body {margin: 0;}
.color1 {color: #E60012;}
.color2 {color: #EB6100;}
.color3 {color: #F39800;}
.color4 {color: #FCC800;}
.color5 {color: #FFF100;}
.color6 {color: #CFDB00;}
.color7 {color: #8FC31F;}
.color8 {color: #22AC38;}
.color9 {color: #009944;}
.color10 {color: #009B6B;}
.color11 {color: #009E96;}
.color12 {color: #00A0C1;}
.color13 {color: #00A0E9;}
.color14 {color: #0086D1;}
.color15 {color: #0068B7;}
.color16 {color: #00479D;}
.color17 {color: #1D2088;}
.color18 {color: #601986;}
.color19 {color: #920783;}
.color20 {color: #BE0081;}
.color21 {color: #E4007F;}
.color22 {color: #E5006A;}
.color23 {color: #E5004F;}
.color24 {color: #E60033;}
.word {font-size: 20px;}
.content {text-align: center;font-size:0;}
.blink {
    font-size: 20px;
    animation: fade 500ms infinite;
    -webkit-animation: fade 500ms infinite;
}
@keyframes fade {
    from {opacity: 1.0;}
    50% {opacity: 0;}
    to {opacity: 1.0;}
}
    </style>
</head>

<body>
   <div class="content">
    <span class="word color23">h</span>
    <span class="word color22">e</span>
    <span class="word color4">l</span>
    <span class="word color24">l</span>
    <span class="word color17">o</span>
    <span class="word color2"> </span>
    <span class="word color9">w</span>
    <span class="word color3">o</span>
    <span class="word color1">r</span>
    <span class="word color23">l</span>
    <span class="word color15">d</span>
    <br>
    <span class="word color15">你</span>
    <span class="word color13">好</span>
    <span class="word color16">世</span>
    <span class="word color19">界</span>
    <span class="blink" id="jsBlink">|</span>
</div>
    <script type="text/javascript">
        output(' <>\n \n <> ')

        function output(str) {
          // 每次输出指定字符串前,请将闪动节点之前的所有其他节点移除
          var contentDom = document.querySelector('.content')

          while(contentDom.children.length > 1) {
            if(contentDom.children[0].id !== 'jsBlink') {
              contentDom.children[0].remove()
            }
          }

          var blinkDom = document.querySelector('#jsBlink')
          
          var strArr = str.split('');
          var count = 0;

          var timer = setInterval(function() {
            render(strArr[count], contentDom, blinkDom);
            count++
            if(count === strArr.length) {
              clearInterval(timer)
            }
          }, 200)
        };

        // 渲染
        function render(word, contentDom, blinkDom) {
          // 如果是\n请直接输出<br />
          if (word === '\n') {
            var br = document.createElement('br')
            contentDom.insertBefore(br, blinkDom)
          } else {
            var span = document.createElement('span')
            span.classList.add('word')
            span.classList.add('color' + getColorNumber())
            span.innerHTML = transferWord(word)
            contentDom.insertBefore(span, blinkDom)
          }
        }

        // 如果输出字符为空格、<、>,请分别对其进行HTML转义
        function transferWord(val) {
          var result = val
          if(val === ' ') {
            result = ' '
          } else if (val === '>') {
            result = ">"
          } else if (val === '<') {
            result = "<"
          }
          return result
        }

        // 获取随机颜色
        function getColorNumber() {
          return Math.floor(Math.random() * 24 + 1)
        };
    </script>
</body>

</html>

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务