In diesem Tutorial führen wir Sie durch die Erstellung eines erstklassigen, interaktiven mehrstufigen Formulars mit reibungslosen Animationen und clientseitiger Validierung mithilfe von HTML, CSS und JavaScript. Dieses Formular bietet ein verbessertes Benutzererlebnis und sieht aus wie etwas direkt aus dem Jahr 2025!
Live-Demo: https://codepen.io/HanGPIIIErr/pen/ZYzbrqW
Inhaltsverzeichnis
1.Einführung
Mehrstufige Formulare sind eine hervorragende Möglichkeit, die Benutzererfahrung zu verbessern, indem lange Formulare in überschaubare Abschnitte unterteilt werden. In diesem Tutorial erstellen wir ein fünfstufiges Formular, das Folgendes umfasst:
Wir fügen flüssige Animationen zwischen den Schritten hinzu und validieren Benutzereingaben, um die Datenintegrität sicherzustellen.
Voraussetzungen
Grundkenntnisse von HTML, CSS und JavaScript
Vertrautheit mit Formularelementen und Ereignisbehandlung in JavaScript
Projektstruktur
Wir werden drei Hauptdateien haben:
index.html – Die HTML-Struktur
style.css – Das Styling für unser Formular
script.js – Das JavaScript zur Verarbeitung von Formularinteraktionen
Beginnen wir mit der Einrichtung unserer HTML-Datei.
<!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); } }
Erklärung
Machen wir unser Formular funktionsfähig.
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'); } }); });
Erklärung
? Fazit: Die Zukunft des Gladiatorenkampfes gestalten
Die neuesten Verbesserungen von Gladiators Battle stellen einen bedeutenden Schritt hin zu einem nahtlosen und fesselnden Erlebnis für alle Spieler dar. Mit einem erweiterten Tutorialsystem, modularen Komponenten, einem florierenden Gilden-Ökosystem und optimierten Minispielen entwickelt sich das Spiel zum ultimativen Gladiatoren-Rollenspiel.
Ob Sie ein Neuling sind, der die Arena zum ersten Mal erkundet, oder ein erfahrener Krieger, der das Schlachtfeld dominiert, diese Updates stellen sicher, dass jeder sein eigenes episches Erbe schmieden kann.
? Mach mit bei der Reise!
Wir suchen aktiv nach Feedback von Spielern und Entwicklern. Tauchen Sie ein in Gladiators Battle und teilen Sie uns Ihre Gedanken mit.
? Website: https://gladiatorsbattle.com
?️ Unterstützen Sie uns auf Kickstarter: https://www.kickstarter.com/projects/gladiatorsbattle/gladiators-battle-forge-your-legend-in-the-ultimate-arena
? Folgen Sie uns auf X (ehemals Twitter): https://x.com/GladiatorsBT
? Verbinden Sie sich auf LinkedIn: https://www.linkedin.com/in/pierre-romain-lopez
? Treten Sie der Community auf Discord bei: https://discord.gg/YBNF7KjGwx
Vielen Dank für Ihre unerschütterliche Unterstützung bei der Weiterentwicklung von Gladiators Battle. Ihr Feedback, Ihre Ideen und Ihre Begeisterung sind die treibenden Kräfte hinter unserem Fortschritt.
Lasst das Abenteuer weitergehen – Ave, Gladiatoren! ?✨
Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte unten einen Kommentar!
Das obige ist der detaillierte Inhalt vonErstellen eines Premium-Mehrschrittformulars mit Animationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!