Bei CSS "display: flex;" wird alles schief warum?

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:
Bild zum Beitrag

Mir korrigiertem Div:
Bild zum Beitrag

Ist es das was du mit 'schief' meinst?

Woher ich das weiß:Hobby
 - (Webseite, HTML, Code)  - (Webseite, HTML, Code)