이 튜토리얼에서는 HTML, CSS 및 JavaScript를 사용하여 부드러운 애니메이션과 클라이언트 측 유효성 검사가 포함된 프리미엄 대화형 다단계 양식을 만드는 방법을 안내합니다. 이 양식은 향상된 사용자 경험을 제공하며 마치 2025년에 나온 것처럼 보입니다!
라이브 데모: https://codepen.io/HanGPIIIErr/pen/ZYzbrqW
목차
1.소개
다단계 양식은 긴 양식을 관리 가능한 섹션으로 나누어 사용자 경험을 향상시키는 훌륭한 방법입니다. 이 튜토리얼에서는 다음을 포함하는 5단계 양식을 작성합니다.
데이터 무결성을 보장하기 위해 단계 사이에 부드러운 애니메이션을 추가하고 사용자 입력을 검증할 예정입니다.
전제조건
HTML, CSS, JavaScript에 대한 기본 이해
JavaScript의 양식 요소 및 이벤트 처리에 대한 지식
프로젝트 구조
다음 세 가지 주요 파일이 있습니다.
index.html — HTML 구조
style.css — 양식의 스타일
script.js — 양식 상호 작용을 처리하는 JavaScript
HTML 파일을 설정하는 것부터 시작해 보겠습니다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Premium Multi-Step Form</title> <link href="https://fonts.googleapis.com/css?family=Poppins:300,400,600&display=swap" rel="stylesheet"> <link rel="stylesheet" href="style.css"> </head> <body> <form> <p>Explanation</p> <ul> <li>Form Steps: Each step is wrapped in a div with the class form-step.</li> <li>Active Class: The first step has the class active to display it initially.</li> <li>Navigation Buttons: Each step (except the first and last) has "Previous" and "Next" buttons.</li> <li>Summary Section: The last step displays a summary of the entered information.</li> </ul> <p>Styling with CSS</p> <p>Now, let's style our form to give it that premium feel.<br> </p> <pre class="brush:php;toolbar:false">/* style.css */ body { font-family: 'Poppins', sans-serif; background: linear-gradient(135deg, #1abc9c, #16a085); display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; } form { width: 90%; max-width: 600px; background: rgba(255, 255, 255, 0.95); padding: 3em; border-radius: 20px; box-shadow: 0 15px 25px rgba(0, 0, 0, 0.2); backdrop-filter: blur(10px); position: relative; overflow: hidden; } .form-step { position: absolute; width: 100%; opacity: 0; transform: scale(0.8) translateY(50px); transition: all 0.5s ease; } .form-step.active { opacity: 1; transform: scale(1) translateY(0); position: relative; } .step-header { position: absolute; top: -30px; right: 30px; background: #16a085; color: #fff; padding: 0.5em 1em; border-radius: 30px; font-weight: 600; animation: slideIn 0.5s forwards; } h2 { margin-bottom: 1em; color: #333; font-weight: 600; text-align: center; animation: fadeInDown 0.5s ease-in-out; } label { display: block; margin-top: 1em; color: #555; font-weight: 500; animation: fadeInUp 0.5s ease-in-out; } input[type="text"], input[type="email"], input[type="file"], textarea { width: 100%; padding: 0.75em 1em; margin-top: 0.5em; border: 2px solid #ddd; border-radius: 10px; font-size: 1em; outline: none; transition: border-color 0.3s; animation: fadeInUp 0.5s ease-in-out; } input:focus, textarea:focus { border-color: #1abc9c; } input[type="checkbox"] { margin-right: 0.5em; } .buttons { display: flex; justify-content: space-between; margin-top: 2em; animation: fadeInUp 0.5s ease-in-out; } button { padding: 0.75em 2em; border: none; border-radius: 30px; cursor: pointer; font-size: 1em; font-weight: 600; transition: background 0.3s, transform 0.3s, box-shadow 0.3s; } .next-step, .prev-step { background: #1abc9c; color: #fff; } .next-step:hover, .prev-step:hover { background: #16a085; transform: translateY(-3px); box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1); } button[type="submit"] { background: #e74c3c; color: #fff; margin-left: auto; } button[type="submit"]:hover { background: #c0392b; transform: translateY(-3px); box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1); } #summary p { margin: 1em 0; color: #333; font-weight: 500; animation: fadeInUp 0.5s ease-in-out; } /* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInDown { from { opacity: 0; transform: translateY(-30px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } }
설명
양식을 기능적으로 만들어 보겠습니다.
document.addEventListener('DOMContentLoaded', function() { const form = document.getElementById('multi-step-form'); const steps = document.querySelectorAll('.form-step'); const nextBtns = document.querySelectorAll('.next-step'); const prevBtns = document.querySelectorAll('.prev-step'); const summary = document.getElementById('summary'); let currentStep = 0; nextBtns.forEach(btn => { btn.addEventListener('click', () => { if (validateStep()) { steps[currentStep].classList.remove('active'); currentStep++; if (currentStep < steps.length) { steps[currentStep].classList.add('active'); } if (currentStep === steps.length - 1) { displaySummary(); } } }); }); prevBtns.forEach(btn => { btn.addEventListener('click', () => { steps[currentStep].classList.remove('active'); currentStep--; steps[currentStep].classList.add('active'); }); }); form.addEventListener('submit', (e) => { e.preventDefault(); alert('Form successfully submitted!'); form.reset(); steps[currentStep].classList.remove('active'); currentStep = 0; steps[currentStep].classList.add('active'); }); function validateStep() { let stepIsValid = true; const currentInputs = steps[currentStep].querySelectorAll('input, textarea'); currentInputs.forEach(input => { if (!input.checkValidity()) { input.reportValidity(); stepIsValid = false; } }); return stepIsValid; } function displaySummary() { const name = document.getElementById('name').value || 'N/A'; const email = document.getElementById('email').value || 'N/A'; const prefs = Array.from(document.querySelectorAll('input[name="pref"]:checked')).map(el => el.value).join(', ') || 'None'; const comments = document.getElementById('comments').value || 'None'; summary.innerHTML = ` <p><strong>Name:</strong> ${name}</p> <p><strong>Email:</strong> ${email}</p> <p><strong>Preferences:</strong> ${prefs}</p> <p><strong>Comments:</strong> ${comments}</p> `; } // Initialize steps steps.forEach((step, index) => { if (index !== currentStep) { step.classList.remove('active'); } else { step.classList.add('active'); } }); });
설명
? 결론: 검투사 전투의 미래를 만들다
Gladiators Battle의 최신 개선 사항은 모든 플레이어에게 원활하고 매력적인 경험을 제공하는 데 큰 도약을 의미합니다. 풍부한 튜토리얼 시스템, 모듈식 구성 요소, 번창하는 길드 생태계, 최적화된 미니 게임을 통해 게임은 최고의 검투사 RPG로 진화하고 있습니다.
처음으로 경기장을 탐험하는 신인이든, 전장을 지배하는 노련한 전사이든, 이번 업데이트를 통해 모든 사람이 자신만의 장대한 유산을 만들 수 있습니다.
? 여행에 동참하세요!
저희는 플레이어와 개발자 모두로부터 적극적으로 피드백을 구하고 있습니다. Gladiators Battle에 참여하고 여러분의 생각을 공유해 주세요.
? 홈페이지: https://gladiatorsbattle.com
?️ Kickstarter에서 지원해주세요: https://www.kickstarter.com/projects/gladiatorsbattle/gladiators-battle-forge-your-legend-in-the-ultimate-arena
? X(이전 Twitter)에서 팔로우하세요: https://x.com/GladiatorsBT
? LinkedIn에 연결하세요: https://www.linkedin.com/in/pierre-romain-lopez
? Discord에서 커뮤니티에 가입하세요: https://discord.gg/YBNF7KjGwx
Gladiators Battle을 계속 개발하는 동안 변함없는 지원에 감사드립니다. 여러분의 피드백, 아이디어, 열정이 우리 발전의 원동력입니다.
모험을 계속하세요. Ave, Gladiators! ?✨
질문이나 제안사항이 있으시면 아래 댓글로 남겨주세요!
위 내용은 애니메이션으로 프리미엄 다단계 양식 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!