我正在尝试将这种打字效果放在我的网站上。我使用Brackets作为代码编辑器,并且在其实时预览中,代码根本没有运行。测试了其他几种方法来实现此效果,但似乎对我的实时预览无效,仅对Codepen有效。有人可以帮忙吗?
const typedTextSpan = document.querySelector(".typed-text");
const cursorSpan = document.querySelector(".cursor");
const textArray = ["hard.","fun.","a journey.","LIFE!"];
const typingDelay = 200;
const erasingDelay = 100;
const newTextDelay = 2000; // Delay between current and next text
let textArrayIndex = 0;
let charIndex = 0;
function type() {
if (charIndex < textArray[textArrayIndex].length) {
if (!cursorSpan.classList.contains("typing")) cursorSpan.classList.add("typing");
typedTextSpan.textContent += textArray[textArrayIndex].charAt(charIndex);
charIndex++;
setTimeout(type,typingDelay);
} else {
cursorSpan.classList.remove("typing");
setTimeout(erase,newTextDelay);
}
}
function erase() {
if (charIndex > 0) {
if (!cursorSpan.classList.contains("typing")) cursorSpan.classList.add("typing");
typedTextSpan.textContent = textArray[textArrayIndex].substring(0,charIndex - 1);
charIndex--;
setTimeout(erase,erasingDelay);
} else {
cursorSpan.classList.remove("typing");
textArrayIndex++;
if (textArrayIndex >= textArray.length) textArrayIndex = 0;
setTimeout(type,typingDelay + 1100);
}
}
document.addEventListener("DOMContentLoaded",function() { // On DOM Load initiate the effect
if (textArray.length) setTimeout(type,newTextDelay + 250);
});
@import url('https://fonts.googleapis.com/css?family=Montserrat');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Montserrat',sans-serif;
background-color: #000;
color: #eee;
}
.container {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.container p {
font-size: 3rem;
padding: 0.5rem;
font-weight: bold;
letter-spacing: 0.1rem;
text-align: center;
overflow: hidden;
}
.container p span.typed-text {
font-weight: normal;
color: #dd7732;
}
.container p span.cursor {
display: inline-block;
background-color: #ccc;
margin-left: 0.1rem;
width: 3px;
animation: blink 1s infinite;
}
.container p span.cursor.typing {
animation: none;
}
@keyframes blink {
0% {
background-color: #ccc;
}
49% {
background-color: #ccc;
}
50% {
background-color: transparent;
}
99% {
background-color: transparent;
}
100% {
background-color: #ccc;
}
}
<div class="container">
<h1>
<p>Coding is <span class="typed-text"></span><span class="cursor"> </span></p>
</h1>
</div>