繁体   English   中英

无法在JavaScript中的换字动画中提供空格和换行符

[英]Unable to give line spaces and line breaks in word changing animation in JavaScript

有五个要点:

  1. 可口
  2. 一个出色的开发者
  3. 网络开发人员
  4. 应用程式开发人员
  5. 一位AI开发人员

我想将它们添加到如以下示例所示的单词转换动画中,但是我无法在两者之间添加换行符和换行符。 关于如何实现的任何建议?

您也可以在vivank.github.io上查看示例

假设我想在第二点精彩之后换行,如何实现? 或假设我不想不必要的换行

我想在每个单词之间留空格。 我也想根据需要给换行符,怎么办? 有什么建议么?

 var words = document.getElementsByClassName('word'); var wordArray = []; var currentWord = 0; for (var i = 0; i < words.length; i++) { splitLetters(words[i]); } function changeWord() { var cw = wordArray[currentWord]; var nw = currentWord == words.length-1 ? wordArray[0] : wordArray[currentWord+1]; for (var i = 0; i < cw.length; i++) { animateLetterOut(cw, i); } for (var i = 0; i < nw.length; i++) { nw[i].className = 'letter behind'; nw[0].parentElement.style.opacity = 1; animateLetterIn(nw, i); } currentWord = (currentWord == wordArray.length-1) ? 0 : currentWord+1; } function animateLetterOut(cw, i) { setTimeout(function() { cw[i].className = 'letter out'; }, i*80); } function animateLetterIn(nw, i) { setTimeout(function() { nw[i].className = 'letter in'; }, 340+(i*80)); } function splitLetters(word) { var content = word.innerHTML; word.innerHTML = ''; var letters = []; for (var i = 0; i < content.length; i++) { var letter = document.createElement('span'); letter.className = 'letter'; letter.innerHTML = content.charAt(i); word.appendChild(letter); letters.push(letter); } wordArray.push(letters); } changeWord(); setInterval(changeWord, 4000); var i = 0; var txt = 'Hi'; var speed = 100; function typeWriter() { if (i < txt.length) { document.getElementById("demo").innerHTML += txt.charAt(i); i++; setTimeout(typeWriter, speed); } } typeWriter() var j = 0; var txt1 = 'I am Vivank Sharma'; var speed = 100; function typeWriter1() { if (j < txt1.length) { document.getElementById("demo1").innerHTML += txt1.charAt(j); j++; setTimeout(typeWriter1, speed); } } typeWriter1() 
 body{ background-color: #252627; margin: 0px; width: 100%; height: 100%; overflow: hidden; } .page{ width: 100%; height: 100%; position: absolute; } .bglogo{ position: absolute; top:20%; right: 15vh; height: 65vh; width: 65vh; z-index: 0; } path { fill: #252627; stroke: #00ffdc; animation: my_animation 2s linear forwards, filling .2s linear 2s forwards; stroke-dasharray: 400; /* need to ... */ stroke-dashoffset: 400; /* ... match */ } @keyframes my_animation { to {stroke-dashoffset: 0} } @keyframes filling { to {fill: #ff0046} } @import url(https://fonts.googleapis.com/css?family=Open+Sans:600); body { font-family: 'Open Sans', sans-serif; font-weight: 600; font-size: 40px; } .text { position: absolute; left: 10%; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); width: 40%; max-height: 90%; } p { display: inline-block; vertical-align: top; margin: 0; color: white; } .word { position: absolute; width: 220px; opacity: 0; } .letter { display: inline-block; position: relative; float: left; transform: translateZ(25px); transform-origin: 50% 50% 25px; } .letter.out { transform: rotateX(90deg); transition: transform 0.32s cubic-bezier(0.55, 0.055, 0.675, 0.19); } .letter.behind { transform: rotateX(-90deg); } .letter.in { transform: rotateX(0deg); transition: transform 0.38s cubic-bezier(0.175, 0.885, 0.32, 1.275); } .wisteria { color: #8e44ad; } .belize { color: #2980b9; } .pomegranate { color: #c0392b; } .green { color: #16a085; } .midnight { color: #2c3e50; } 
 <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Vivank Sharma</title> <link rel="stylesheet" href="css/master.css"> <link rel="stylesheet" href="css/master_responsive.css"> <script type="text/javascript" src="JS/main.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> </head> <body> <div class="page"> <div class="bglogo"> <?xml version="1.0" encoding="iso-8859-1"?> <!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 89.999 89.999" style="enable-background:new 0 0 89.999 89.999;" xml:space="preserve"> <g> <path d="M89.551,24.201c-5.029,28.863-33.127,53.301-41.577,58.883c-8.454,5.582-16.163-2.236-18.96-8.148 c-3.201-6.738-12.793-43.285-15.307-46.311C11.195,25.596,3.656,31.65,3.656,31.65L0,26.768c0,0,15.307-18.623,26.957-20.951 c12.35-2.469,12.332,19.318,15.301,31.416c2.873,11.701,4.807,18.398,7.312,18.398c2.514,0,7.311-6.525,12.562-16.531 c5.264-10.016-0.225-18.857-10.505-12.568C55.738,1.395,94.578-4.65,89.551,24.201z" fill="#ff0043"/> </g> </svg> </div> <div class="text"> <p id="demo"></p><br> <p id="demo1"></p> <br> <p> <span class="word wisteria">tasty.</span> <span class="word belize">a wonderful developer</span> <span class="word pomegranate">a web developer</span> <span class="word green">an app developer</span> <span class="word midnight">an AI developer </span> </p> </div> </body> <script type="text/javascript" src="JS/typewriter.js"></script> </html> 

为了解决您的空间问题,您可以更换 &nbsp;空格

 var words = document.getElementsByClassName('word'); var wordArray = []; var currentWord = 0; for (var i = 0; i < words.length; i++) { splitLetters(words[i]); } function changeWord() { var cw = wordArray[currentWord]; var nw = currentWord == words.length-1 ? wordArray[0] : wordArray[currentWord+1]; for (var i = 0; i < cw.length; i++) { animateLetterOut(cw, i); } for (var i = 0; i < nw.length; i++) { nw[i].className = 'letter behind'; nw[0].parentElement.style.opacity = 1; animateLetterIn(nw, i); } currentWord = (currentWord == wordArray.length-1) ? 0 : currentWord+1; } function animateLetterOut(cw, i) { setTimeout(function() { cw[i].className = 'letter out'; }, i*80); } function animateLetterIn(nw, i) { setTimeout(function() { nw[i].className = 'letter in'; }, 340+(i*80)); } function splitLetters(word) { var content = word.innerHTML; word.innerHTML = ''; var letters = []; for (var i = 0; i < content.length; i++) { var letter = document.createElement('span'); letter.className = 'letter'; var char = content.charAt(i); letter.innerHTML = char===" "?"&nbsp;":char; word.appendChild(letter); letters.push(letter); } wordArray.push(letters); } changeWord(); setInterval(changeWord, 4000); var i = 0; var txt = 'Hi'; var speed = 100; function typeWriter() { if (i < txt.length) { document.getElementById("demo").innerHTML += txt.charAt(i); i++; setTimeout(typeWriter, speed); } } typeWriter() var j = 0; var txt1 = 'I am Vivank Sharma'; var speed = 100; function typeWriter1() { if (j < txt1.length) { document.getElementById("demo1").innerHTML += txt1.charAt(j); j++; setTimeout(typeWriter1, speed); } } typeWriter1() 
 body{ background-color: #252627; margin: 0px; width: 100%; height: 100%; overflow: hidden; } .page{ width: 100%; height: 100%; position: absolute; } .bglogo{ position: absolute; top:20%; right: 15vh; height: 65vh; width: 65vh; z-index: 0; } path { fill: #252627; stroke: #00ffdc; animation: my_animation 2s linear forwards, filling .2s linear 2s forwards; stroke-dasharray: 400; /* need to ... */ stroke-dashoffset: 400; /* ... match */ } @keyframes my_animation { to {stroke-dashoffset: 0} } @keyframes filling { to {fill: #ff0046} } @import url(https://fonts.googleapis.com/css?family=Open+Sans:600); body { font-family: 'Open Sans', sans-serif; font-weight: 600; font-size: 40px; } .text { position: absolute; left: 10%; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); width: 40%; max-height: 90%; } p { display: inline-block; vertical-align: top; margin: 0; color: white; } .word { position: absolute; width: 220px; opacity: 0; } .letter { display: inline-block; position: relative; float: left; transform: translateZ(25px); transform-origin: 50% 50% 25px; } .letter.out { transform: rotateX(90deg); transition: transform 0.32s cubic-bezier(0.55, 0.055, 0.675, 0.19); } .letter.behind { transform: rotateX(-90deg); } .letter.in { transform: rotateX(0deg); transition: transform 0.38s cubic-bezier(0.175, 0.885, 0.32, 1.275); } .wisteria { color: #8e44ad; } .belize { color: #2980b9; } .pomegranate { color: #c0392b; } .green { color: #16a085; } .midnight { color: #2c3e50; } 
 <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Vivank Sharma</title> <link rel="stylesheet" href="css/master.css"> <link rel="stylesheet" href="css/master_responsive.css"> <script type="text/javascript" src="JS/main.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> </head> <body> <div class="page"> <div class="bglogo"> <?xml version="1.0" encoding="iso-8859-1"?> <!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 89.999 89.999" style="enable-background:new 0 0 89.999 89.999;" xml:space="preserve"> <g> <path d="M89.551,24.201c-5.029,28.863-33.127,53.301-41.577,58.883c-8.454,5.582-16.163-2.236-18.96-8.148 c-3.201-6.738-12.793-43.285-15.307-46.311C11.195,25.596,3.656,31.65,3.656,31.65L0,26.768c0,0,15.307-18.623,26.957-20.951 c12.35-2.469,12.332,19.318,15.301,31.416c2.873,11.701,4.807,18.398,7.312,18.398c2.514,0,7.311-6.525,12.562-16.531 c5.264-10.016-0.225-18.857-10.505-12.568C55.738,1.395,94.578-4.65,89.551,24.201z" fill="#ff0043"/> </g> </svg> </div> <div class="text"> <p id="demo"></p><br> <p id="demo1"></p> <br> <p> <span class="word wisteria">tasty.</span> <span class="word belize">a wonderful developer</span> <span class="word pomegranate">a web developer</span> <span class="word green">an app developer</span> <span class="word midnight">an AI developer </span> </p> </div> </body> <script type="text/javascript" src="JS/typewriter.js"></script> </html> 

我将以下代码添加到您的splitLetters函数中:

var char = content.charAt(i);
letter.innerHTML = char===" "?"&nbsp;":char;

关于换行符-您需要更精确地满足要求...
我猜您可以根据某些条件添加<br>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM