CSS verbessert für Login&Register. javscsript code für magnetic button effect noch in entwicklung.

This commit is contained in:
2026-03-16 12:53:57 +01:00
parent 986629f0a5
commit 723bc835ec
4 changed files with 189 additions and 42 deletions
+141
View File
@@ -0,0 +1,141 @@
:root {
--primary-bg-color: #f4f6f8;
--secondary-bg-color: white;
--nav-bg-color: #333;
}
@font-face {
font-family: "Geist Sans";
src: url("https://assets.codepen.io/605876/GeistVF.ttf") format("truetype");
}
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
font-family: "Geist Sans", system-ui, sans-serif;
}
/* MAGNET EFFECT */
.magnetic {
padding: 10px 20px;
border: none;
background: #4facfe;
color: white;
border-radius: 6px;
cursor: pointer;
font-size: 16px;
transition: transform 0.2s ease;
}
.magnetic:hover {
background: #2d8cf0;
}
/* Reset */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
}
/* Page setup */
body {
min-height: 100vh;
background: var(--primary-bg-color);
}
/* Navbar */
nav {
width: 100%;
background: var(--nav-bg-color);
padding: 15px 30px;
}
nav ul {
list-style: none;
display: flex;
justify-content: flex-end;
gap: 20px;
}
nav a {
color: white;
text-decoration: none;
font-size: 16px;
}
nav a:hover {
color: #4facfe;
}
/* Center login section */
main {
min-height: calc(100vh - 60px);
/* full screen minus navbar */
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
/* Title */
main h1 {
margin-bottom: 20px;
}
/* Form box */
form {
background: var(--secondary-bg-color);
padding: 30px;
border-radius: 8px;
width: 300px;
display: flex;
flex-direction: column;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
}
/* Labels */
label {
margin-top: 10px;
margin-bottom: 5px;
font-size: 14px;
}
/* Inputs */
input {
padding: 10px;
border: 1px solid #ccc;
border-radius: 6px;
}
/* Button */
.button {
margin-top: 20px;
padding: 10px;
border: none;
background: #4facfe;
color: white;
border-radius: 6px;
cursor: pointer;
font-size: 16px;
}
button:hover {
background: #2d8cf0;
}
/* Error message */
.error {
color: red;
margin-bottom: 15px;
}
+14
View File
@@ -0,0 +1,14 @@
const button = document.querySelector(".magnetic")
button.addEventListener("mousemove", (e) => {
const rect = button.getBoundingClientRect()
const x = e.clientX - rect.left - rect.width / 2
const y = e.clientY - rect.top - rect.height / 2
button.style.transform = `translate(${x * 0.3}px, ${y * 0.3}px)`
})
button.addEventListener("mouseleave", () => {
button.style.transform = "translate(0,0)"
})
+20 -22
View File
@@ -5,37 +5,35 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title> <title>Login</title>
<style> <link rel="stylesheet" href="../static/css/login.css">
h1 { <link rel="stylesheet" href="../static/css/login.css">
color: green; </link>
}
.error {
color: red;
}
</style>
</head> </head>
<body> <body>
<nav> <nav>
<ul> <ul>
<li><a href="{{ url_for('login.login') }}">Login</a></li> <li><a href="{{ url_for('login.login') }}"><span>Login</span></a></li>
<li><a href="{{ url_for('login.register') }}">Create account</a></li> <li><a href="{{ url_for('login.register') }}"><span></span>Create account</span></a></li>
</ul> </ul>
</nav> </nav>
<h1>Login to your account</h1>
{% if error %} <main>
<p class="error">{{ error }}</p> <h1>Login to your account</h1>
{% endif %}
<form action="{{ url_for('login.login') }}" method="post"> {% if error %}
<label for="username">Username:</label> <p class="error">{{ error }}</p>
<input type="text" name="username" required /> {% endif %}
<label for="password">Password:</label>
<input type="password" name="password" required /> <form action="{{ url_for('login.login') }}" method="post">
<button type="submit">Login</button> <label for="username">Username:</label>
</form> <input type="text" name="username" required />
<label for="password">Password:</label>
<input type="password" name="password" required />
<button class="magnetic" type="submit">Login</button>
</form>
</main>
<script src="../static/js/login.js" defer></script>
</body> </body>
</html> </html>
+14 -20
View File
@@ -5,15 +5,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sign Up</title> <title>Sign Up</title>
<style> <link rel="stylesheet" href="../static/css/login.css">
h1 {
color: green;
}
.error {
color: red;
}
</style>
</head> </head>
<body> <body>
@@ -23,19 +15,21 @@
<li><a href="{{ url_for('login.register') }}">Create account</a></li> <li><a href="{{ url_for('login.register') }}">Create account</a></li>
</ul> </ul>
</nav> </nav>
<h1>Create an account</h1> <main>
<h1>Create an account</h1>
{% if error %} {% if error %}
<p class="error">{{ error }}</p> <p class="error">{{ error }}</p>
{% endif %} {% endif %}
<form action="{{ url_for('login.register') }}" method="post"> <form action="{{ url_for('login.register') }}" method="post">
<label for="username">Username:</label> <label for="username">Username:</label>
<input type="text" name="username" required /> <input type="text" name="username" required />
<label for="password">Password:</label> <label for="password">Password:</label>
<input type="password" name="password" required /> <input type="password" name="password" required />
<button type="submit">Sign Up</button> <button type="submit">Sign Up</button>
</form> </form>
</main>
</body> </body>
</html> </html>