Inhalt 100%
Dies ist ein Typoblindtext. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks oder Handgloves, um Schriften zu testen.
Ein Modal blockiert die Interaktion mit dem Seiteninhalt, bis der Benutzer entweder eine Aktion abschließt oder das Modal schließt. Da Modale den Arbeitsablauf der Benutzer:innen bewusst unterbrechen, sollten sie sparsam eingesetzt werden, um unnötige Störungen zu vermeiden.
Jedes Modal sollte eine klare, prägnante Überschrift enthalten, die den Zweck verständlich macht. Ergänzender Text sollte verständlich erklären, welche Aktion erwartet wird und warum diese notwendig ist. Modale werden nicht für komplexe Formulare oder umfangreiche Informationsmengen verwendet, um die Benutzerfreundlichkeit nicht zu beeinträchtigen.
<button class="btn btn-primary" type="button" data-bs-toggle="modal" data-bs-target="#primaryModal"> Modal öffnen</button><div class="modal fade" id="primaryModal" tabindex="-1" aria-labelledby="primaryModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="primaryModalLabel">Inhalt 100%</h4> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" ></button> </div> <div class="modal-body"> <p> Dies ist ein <strong>Typoblindtext</strong>. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks oder Handgloves, um Schriften zu testen. </p> <form class="form needs-validation" novalidate> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="altes-passwort" name="altes-passwort" placeholder="Placeholder" required /> <label for="altes-passwort">Aktuelles Passwort eingeben</label> <button type="button" id="toggle-altes-passwort"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort" name="neues-passwort" placeholder="Placeholder" required data-pw-criteria="true" data-pw-match="true" /> <label for="neues-passwort">Neues Passwort</label> <button type="button" id="toggle-neues-passwort"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> <ul class="" data-criteria-list="neues-passwort"> <li data-criterion="length">Mindestens 12 Zeichen</li> <li data-criterion="case">Groß- und Kleinbuchstaben</li> <li data-criterion="number">Mindestens 1 Ziffer</li> <li data-criterion="special">Mindestens 1 Sonderzeichen</li> </ul> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort-wiederholen" name="neues-passwort-wiederholen" placeholder="Placeholder" required data-pw-match="true" /> <label for="neues-passwort-wiederholen" >Neues Passwort wiederholen</label > <button type="button" id="toggle-neues-passwort-wiederholen"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="button-group"> <a class="btn btn-link" href="#"> Abbrechen </a> <button class="btn btn-primary" type="submit">Speichern</button> </div> </form> </div> </div> </div></div>
Der Inhalt eines Modals (z. B. Formularfelder, Body-Text, etc.) kann entweder in einem 100%-Container oder in einem 75%-Container dargestellt werden. Diese Option ermöglicht eine flexiblere Gestaltung des Inhalts, während die Größe des Modals selbst unverändert bleibt. Der 75%-Container eignet sich besonders für Inhalte, die eine reduzierte Breite benötigen, um die Lesbarkeit oder visuelle Struktur zu verbessern. Wichtig: Die Headline des Modals bleibt unabhängig vom verwendeten Container immer in voller Breite und wird nicht von der Containergröße beeinflusst.
<button class="btn btn-secondary" type="button" data-bs-toggle="modal" data-bs-target="#secondaryModal"> Modal öffnen</button><div class="modal fade" id="secondaryModal" tabindex="-1" aria-labelledby="secondaryModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="secondaryModalLabel">Inhalt 75%</h4> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" ></button> </div> <div class="modal-body"> <div class="row"> <div class="col-md-9"> <p> Dies ist ein <strong>Typoblindtext</strong>. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks oder Handgloves, um Schriften zu testen. </p> <form class="form needs-validation" novalidate> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="altes-passwort2" name="altes-passwort2" placeholder="Placeholder" required /> <label for="altes-passwort2" >Aktuelles Passwort eingeben</label > <button type="button" id="toggle-altes-passwort2"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort2" name="neues-passwort2" placeholder="Placeholder" required data-pw-criteria="true" data-pw-match="true" /> <label for="neues-passwort2">Neues Passwort</label> <button type="button" id="toggle-neues-passwort2"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> <ul class="" data-criteria-list="neues-passwort2"> <li data-criterion="length">Mindestens 12 Zeichen</li> <li data-criterion="case">Groß- und Kleinbuchstaben</li> <li data-criterion="number">Mindestens 1 Ziffer</li> <li data-criterion="special">Mindestens 1 Sonderzeichen</li> </ul> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort-wiederholen-2" name="neues-passwort-wiederholen-2" placeholder="Placeholder" required data-pw-match="true" /> <label for="neues-passwort-wiederholen-2" >Neues Passwort wiederholen</label > <button type="button" id="toggle-neues-passwort-wiederholen-2" > <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="button-group"> <a class="btn btn-link" href="#"> Abbrechen </a> <button class="btn btn-primary" type="submit">Speichern</button> </div> </form> </div> </div> </div> </div> </div></div>
Es gibt verschiedene Interaktionsmöglichkeiten, mit denen ein Modal geöffnet wird. Dazu gehören der Primary Button, Secondary Button, Text Button, Icon Button aber auch ein Inputfeld. Diese Demo bietet eine anschauliche Darstellung, wie Modale durch unterschiedliche Auslöser verwendet werden und erleichtert das Verständnis ihrer Funktionalität und Einsatzmöglichkeiten.
<button class="btn btn-link" type="button" data-bs-toggle="modal" data-bs-target="#linkModal"> Modal öffnen</button><div class="modal fade" id="linkModal" tabindex="-1" aria-labelledby="linkModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="linkModalLabel">Inhalt 100%</h4> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" ></button> </div> <div class="modal-body"> <p> Dies ist ein <strong>Typoblindtext</strong>. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks oder Handgloves, um Schriften zu testen. </p> <form class="form needs-validation" novalidate> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="altes-passwort-3" name="altes-passwort-3" placeholder="Placeholder" required /> <label for="altes-passwort-3">Aktuelles Passwort eingeben</label> <button type="button" id="toggle-altes-passwort-3"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort-3" name="neues-passwort-3" placeholder="Placeholder" required data-pw-criteria="true" data-pw-match="true" /> <label for="neues-passwort-3">Neues Passwort</label> <button type="button" id="toggle-neues-passwort-3"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> <ul class="" data-criteria-list="neues-passwort-3"> <li data-criterion="length">Mindestens 12 Zeichen</li> <li data-criterion="case">Groß- und Kleinbuchstaben</li> <li data-criterion="number">Mindestens 1 Ziffer</li> <li data-criterion="special">Mindestens 1 Sonderzeichen</li> </ul> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort-wiederholen-3" name="neues-passwort-wiederholen-3" placeholder="Placeholder" required data-pw-match="true" /> <label for="neues-passwort-wiederholen-3" >Neues Passwort wiederholen</label > <button type="button" id="toggle-neues-passwort-wiederholen-3"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="button-group"> <a class="btn btn-link" href="#"> Abbrechen </a> <button class="btn btn-primary" type="submit">Speichern</button> </div> </form> </div> </div> </div></div>
<button class="btn btn-secondary" type="button" data-bs-toggle="modal" data-bs-target="#iconOnlySecondaryModal"> <svg class="icon icon-edit"> <use xlink:href="/assets/icons/sprite.Br4IYrdf.svg#icon-edit"></use> </svg> <span class="visually-hidden">Modal öffnen</span></button><div class="modal fade" id="iconOnlySecondaryModal" tabindex="-1" aria-labelledby="iconOnlySecondaryModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="iconOnlySecondaryModalLabel">Inhalt 75%</h4> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" ></button> </div> <div class="modal-body"> <div class="row"> <div class="col-md-9"> <p> Dies ist ein <strong>Typoblindtext</strong>. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks oder Handgloves, um Schriften zu testen. </p> <form class="form needs-validation" novalidate> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="altes-passwort4" name="altes-passwort4" placeholder="Placeholder" required /> <label for="altes-passwort4" >Aktuelles Passwort eingeben</label > <button type="button" id="toggle-altes-passwort4"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort4" name="neues-passwort4" placeholder="Placeholder" required data-pw-criteria="true" data-pw-match="true" /> <label for="neues-passwort4">Neues Passwort</label> <button type="button" id="toggle-neues-passwort4"> <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> <ul class="" data-criteria-list="neues-passwort4"> <li data-criterion="length">Mindestens 12 Zeichen</li> <li data-criterion="case">Groß- und Kleinbuchstaben</li> <li data-criterion="number">Mindestens 1 Ziffer</li> <li data-criterion="special">Mindestens 1 Sonderzeichen</li> </ul> </div> <div class="form-group element-text"> <div class="form-floating input-group"> <input type="password" class="form-control" id="neues-passwort-wiederholen-4" name="neues-passwort-wiederholen-4" placeholder="Placeholder" required data-pw-match="true" /> <label for="neues-passwort-wiederholen-4" >Neues Passwort wiederholen</label > <button type="button" id="toggle-neues-passwort-wiederholen-4" > <span class="icon-visible"></span> <span class="visually-hidden">Passwort einblenden</span> </button> <div class="invalid-feedback">Individuelle Fehlermeldung</div> <div class="valid-feedback">Individuelle Erfolgsmeldung</div> </div> </div> <div class="button-group"> <a class="btn btn-link" href="#"> Abbrechen </a> <button class="btn btn-primary" type="submit">Speichern</button> </div> </form> </div> </div> </div> </div> </div></div>
Textplatzhalter für Verweis auf Formularelement Paswort
Für eine korrekte Darstellung des Modals ist es wichtig, dass das Element direkt im <body>
eingebunden und nicht tiefer verschachtelt wird. So kann sichergestellt werden, dass das Modal korrekt über dem Seiteninhalt angezeigt wird. Der Button, der das Modal öffnet, kann jedoch beliebig platziert werden.
<body> <!-- some sections, containers, components --> <!-- deeper nesting --> <!-- ... -->
<div class="modal" ...>
</div></body>