html
[HTML+CSS+Javascript 강의] 타이핑 효과 랜딩 페이지 만들기 / 실습 / 웹 코딩
Son
2024. 7. 9. 13:41
[HTML+CSS+Javascript 강의] 타이핑 효과 랜딩 페이지 만들기 / 실습 / 웹 코딩 (youtube.com)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined" rel="stylesheet" />
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="wrap">
<h1>
<span class="material-symbols-outlined">language</span>
</h1>
<p id="dynamic" class="lg-text active">
</p>
<p class="sm-text">SUCODING ❘ 100 Subscribe</p>
</div>
<script src="main.js"></script>
</body>
</html>
*{
margin:0;
padding:0;
box-sizing: border-box;
}
body{
background-color: darkslateblue;
}
.wrap{
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
text-align: center;
}
.material-symbols-outlined{
font-size: 10rem;
}
.lg-text{
font-size: 2rem;
font-weight: bold;
margin-bottom: 5px;
}
.sm-text{
font-size: 1.5rem;
}
#dynamic{
position: relative;
display: inline-block;
}
#dynamic::after{
content: "";
display: block;
position: absolute;
top: 0;
right: -10;
width: 4px;
height: 100%;
background-color: white;
}
#dynamic.active::after{
display: none;
}
let target = document.querySelector("#dynamic");
function randomString(){
let target = document.querySelector("#dynamic"); //dynamic 클래스를 가져옴
let stringArr = ["Learn to HTML","Learn to CSS", "Learn to Javascript", "Learn to Python", "Learn to Ruby"]; //HTML상에서 보여줄 글을 랜덤으로 보여주기 위해서 배열을 만듬
let selectString = stringArr[Math.floor(Math.random() * stringArr.length)]; //랜덤으로 보여주기 위해서 배열의 길이만큼을 랜덤함수랑 곱하고 selectString
let selectStringArr = selectString.split(""); //한글자씩 보여주기 위해서 split
return selectStringArr;
}
function resetTyping(){
target.textContent = ""; //화면상의 모든 글자를 다 지우고
dynamic(randomString()); //다시 글자를 화면에 띄우는 걸 실행
}
function dynamic(randomArr){
if(randomArr.length > 0){ //재귀 탈출 조건
target.textContent += randomArr.shift(); //Shift함수는 배열에서 1개를 출력하고 배열에서 출력문자를 삭제하는 함수
setTimeout(function(){ //재귀
dynamic(randomArr);
},80);
}else{
setTimeout(resetTyping, 3000); //배열에 있는 모든 value값이 화면에 띄워지면 3초뒤 실행
}
}
dynamic(randomString());
function blink(){
target.classList.toggle("active"); //엑티브 함수 온!
}
setInterval(blink, 500); //0.5초마다 엑티브 함수 실행 깜빡깜빡 하는 효과