Bei CSS "display: flex;" wird alles schief warum?
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<!-- stylesheet -->
<link rel="stylesheet" href="styles.css">
<!-- Boostrap Icon -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css" />
</head>
<body>
<div class="container">
<!-- Create Account -->
<div class="sign-up">
<div class="sign-up-container">
<h3>Create account</h3>
<div class="cs-form-group">
<label for="Email">Email</label>
<input type="email" class="cs-form-control">
</div>
</div class="cs-form-group">
<label for="password">Password</label>
<input type="password" name="" id="" class="cs-form-control">
</div>
<div class="cs-form-control">
<button class="cs-form-submit">Create Account</button>
</div>
<span class="divider"></span>
<div class="cs-form-group">
<button class="social-login">
<span class="social-icon">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Google_%22G%22_logo.svg/2048px-Google_%22G%22_logo.svg.png" alt="" style="width: 20px;">
</span>
Create using Google Account
</button>
</div>
<p>Already have an account?<a href="#"> Login</a></p>
</div>
</div>
<!-- Login -->
<div class="login">
</div>
<!-- Forgot Password -->
<div class="forget-password">
</div>
</div>
</body>
</html>
CSS:
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');
*{
box-sizing: border-box;
padding: 0;
margin: 0;
box-sizing: border-box;
}
.container{
position: relative;
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
background: #F5F5F5;
}
.sign-up{
position: relative;
padding: 10px;
width: 420px;
}
.sign-up-container{
position: relative;
background: #F5F5F5;
padding: 24px 20px;
border: 1px solid #D4D5D8;
box-shadow: 0px 1px 2px rgba(152, 152, 152, 0.2);
}
.sign-up-container h3{
font-size: 28px;
font-weight: 800;
margin-bottom: 8px;
}
.cs-form-group{
display: block;
}
2 Antworten
1) Hier:
</div class="cs-form-group">
muss der Slash entfernt und die folgende Einrückung sollte korrigiert werden.
2) Eine Flexbox würde meiner Meinung auf .sign-up-container Sinn machen, um bspw. eine einheitliche Ausrichtung sowie einen einheitlichen Abstand zwischen allen Elementen zu erzeugen. Wenn du allerdings eine Flexbox verwenden möchtest, solltest du auch ihre Ausrichtung definieren. Standardmäßig ist die horizontal (das heißt, alle Flexitems werden auf einer Zeile angeordnet).
Rein strukturell würde ich sogar zwei Schritte weitergehen. Zum einen würde ich für .sign-up-container ein form-Element nehmen, immerhin beinhaltet es größtenteils Formularelemente. Zum anderen würde ich ein fieldset-Element verwenden, um die Formularelemente noch einmal zu gruppieren und mit einem legend-Element (statt h3) zu übertiteln. Das schafft ein ausdrucksstärkeres Markup als zuvor.
HTML:
<form class="sign-up-container">
<fieldset class="sign-up-container-inner">
<legend class="cs-form-legend">Create account</legend>
<!-- form groups, etc. ... -->
</fieldset>
</form>
Die Flexbox würde dementsprechend dem fieldset-Element zugeordnet werden.
CSS:
.sign-up-container-inner {
align-items: center;
border: 0;
display: flex;
flex-direction: column;
row-gap: 4px; /* for example */
}
.cs-form-legend {
font-size: 28px;
font-weight: 800;
margin-bottom: 8px;
text-align: center;
}
Wenn in dem form-Container Buttons liegen, die bei Klick nicht das Formular direkt verschicken sollen, solltest du sie mit einem passenden type-Attribut ausstatten.
Beispiel:
<button type="button">Some button</button>
3) Keines deiner label-Elemente ist an sein input-Element gebunden. Stattdessen verweisen sie sogar auf nicht existente Elemente.
Gib all deinen input-Elementen, denen ein Label zugeordnet werden soll, ein id-Attribut. Der Wert muss eine Zeichenfolge (Mindestlänge: 1, ohne Whitespaces, darf nicht mit einer Zahl starten) sein, die nur ein einziges Mal als ID in deinem kompletten HTML-Dokument vorkommt. Das for-Attribut des Labels muss diese ID referenzieren.
Beispiel:
<label for="email">Email</label>
<input id="email" type="email" class="cs-form-control">
4) Wenn dein Passwortfeld keinen Namen hat, dann entferne das name-Attribut. Ein leerer Wert ist jedenfalls nicht erlaubt.
wird alles schief warum?
Es wäre schon schön zu wissen, 1. welche von den zwei display Eigenschaften im CSS code gemeint sind und 2. was konkret du mit 'schief' meinst.
Im HTML Code der ist mir noch aufgefallen, dass in der Zeile 23 das div mit der Klasse cs-form-group du dieses Schließt (wahrscheinlich schreibfehler).
Jedenfalls ist das der Unterschied:
Genau dein Code:
Mir korrigiertem Div:
Ist es das was du mit 'schief' meinst?

