Modale von Bootstrap zur Flexbox und von table zu grid

  • Hier habe ich 2 Modal die Mit Bootstrap css gestylt wurde

    my2.emess62.de


    Kann mir erst mal jemand zeigen wie das ohne Bootstrap ganau so aussieht

    Und anschließend fände ich beim 2. Modal die Sache mit dem grid interessant. Da würde ich mich über Hinweise und Hilfe freuen.

  • Modale werden jetzt auch von HTML unterstützt, dort nennt es sich "Dialog":

    <dialog>: The Dialog element - HTML: HyperText Markup Language | MDN
    The <dialog> HTML element represents a modal or non-modal dialog box or other interactive component, such as a dismissible alert, inspector, or subwindow.
    developer.mozilla.org

    Wenn dort von Returnvalues und Forms die Rede ist, ist das für dich zunächst nicht relevant und Du kannst es zurück stellen.

    Wie Du siehst, braucht man für das Öffnen und Schließen ein wenig Javascript. Hier muss man einräumen, dass auch Bootstrap gewisse Vorteile hat, indem es einem das abnimmt und verbirgt.


    Was Grid betrifft, ist die Doku auf css-tricks immer noch sehr gut:

    A Complete Guide to CSS Grid | CSS-Tricks
    Our comprehensive guide to CSS grid, focusing on all the settings both for the grid parent container and the grid child elements.
    css-tricks.com

    Versuch mal ob Du damit und meinem Beispiel aus deinem vorigen Thread zum Ziel kommst.

  • Laut https://blog.webdevsimplified.com/2023-04/html-dialog/ sind Dialog und Modal zwei paar verschiedene Schuhe.

    Ein Modal muss erst beendet werden und ein Dialog scrollt mit der Seite mit. Wenn ? würde ich das Modal für meine Zwecke bevorzugen.

    Sonst gibt das Internet nicht viel begreifliches für mich her.

    Also wenn ich in meinem Beispiel. Wie würde ich die Modale aufrufen und stylen? wenn ich auf die bootstrap.min.css verzichten will.

    my2.emess62.de

  • Interessante Fragen. Ich habe das mal mit dem Dialog-Element von HTML ausgetestet.


    Zitat

    ein Dialog scrollt mit der Seite mit.

    Kann ich nicht bestätigen. Verhält sich wie ein mit position: fixed; positioniertes Element, d. h. bezogen auf das Browserfenster bleibt die Position fest und der übrige Inhalt scrollt darunter hindurch.


    Zitat

    when the dialog is open you can still interact with the page just like normal.

    Kann ich ebenfalls nicht bestätigen. Wenn mein dialog-Element offen ist, kann ich mit der übrigen Seite nicht mehr interagieren.


    Kommt mir so vor als hätte der Verfasser eine private Vorstellung von dem Begriff "Dialog", die mit dem Verhalten des Dialog-Elementes von HTML nicht übereinstimmt.


    Teste es am besten mal selbst aus, ob das Dialog-Element sich so verhält, wie Du es wünschst.

  • PS: Ich habe das noch ein wenig weiter untersucht: Öffne ich das Dialog-Element durch das Attribut "open" scrollt es mit dem übrigen Inhalt mit, so wie der Verfasser es beschreibt. Aber nur dann.

    Hallo, ich klinke mich hier mal ganz frech ein ;) Soweit ich weiß, ist das Verhalten je nach dem ob man das <dialog>-Element mit .show() oder .showModal() öffnet anders. Ersteres sollte zum gleichen Ergebnis führen, wie das "open" Attribut zu setzen.

  • So ich habe jetzt sehr viel gelesen und auf w3shool was antiquares gefunden mit dem ich gerne arbeiten würde.

    Dabei ist mir aufgefallen, dass Modale mit Tabellen keine gute Idee ist und ohne Bootstrap schon garnicht.

    Da ich aber eh Flexbox verwenden will. Hoffe ich auf Hilfe wie man von der Tabelle weg zum Grid kommt.
    Ich brauch da ein Beispiel und sei es nur ein Teil der 1. Zeile wäre. Sonst kapier ich das nicht.. Bei geht das leider nich so schnell.

    Unter miflo.de im Menue Modaltest könnte euch das misslungene Werk mit Tabelle ansehen.

  • Verrätst Du uns auch was Du auf w3schools gefunden hast?


    IMO ist die Entscheidung "Tabelle oder nicht" unabhängig davon ob sie sich in einem Modal oder direkt in der Seite befindet. Warum meinst Du denn, dass dein Werk misslungen ist? Vermutlich weil die einzelnen Zellen direkt aneinander hängen so dass man nicht erkennt, was wozu gehört? Das liegt aber am Styling und mit ein wenig Rändern oder Padding oder Margin kann man das sicher wesentlich verbessern.


    Unabhängig davon hat ein Gridlayout aber gewisse Vorteile, ich glaube, ich habe schon Mal darauf hin gewiesen.


    Ich habe mal deine Tabelle umgestellt:

    Und mit diesem CSS kannst Du die Elemente vierspaltig anordnen:

    Du siehst, es wird dadurch sehr kompakt. Auch auf die Klassen könntest Du verzichten wenn Du nth-of-type verwenden würdest. Allerdings ist es mit Klassen ein wenig klarer, was gestylt wird.

  • Hab da noch eine Frage zur Ausrichtung des Textes.

    Sollte mit

    CSS
    .grid-item {
      display: flex;
      align-items: flex-start;
      justify-content: flex-start;
    }
    HTML
     <div class="modal-body">
          <div class="grid-container">
              <div class="nr grid-item">Nr. 1</div>
              <div class="name grid-item">Michael Schlegel</div>
              <div class="desscription grid-item">Der Obermotz aus dem Odenwald Der Kasper, aus Streichholzhausen
                  Im allgemeinen Sprachgebrauch haben sich die Begriffe Angler oder Angelfischer durchgesetzt
              </div>

    der Text nicht oben links ausgerichtet sein?

    align.jpeg


    miflo.de

  • Das hätte ich auch erwartet. Der Grund, dass das nicht passiert ist, dass text-align: center; von main>section geerbt wird. Warum sich das durchsetzt ist zunächst unerwartet. Meine Vermutung: Der Text ist ein eigener Knoten im DOM und die Flex-Anweisungen wirken auf diesen Knoten ohne den Text darin zu beeinflussen, das text-align jedoch auf den Text innerhalb des Knotens.

    Beheben kannst Du das indem Du zusätzlich text-align-left; dem Flexitem zuweist.

  • Ok ich konnte es auch in der Smartphone Ansicht ausrichten.

    Aber bevor wir die Sache mitnth-of-type angehen. Hätte ich gerne, dass dier Hintergrund Inaktiv ist . D.H. Nur das Modal soll scrollen nicht die Seite im Hintergrund. Ich hoffe du verstehst was ich meine. Du kannst es sehen wenn du das Modal in kleiner Smartphone - Ansicht siehst


    miflo.de

  • Guten Morgen,

    ich verstehe das so, dass in der finalen Version das Grid viel mehr Zeilen hat, so dass es in das Modal nicht hinein passt.

    Wenn wir das Eventbubbling für die Touchevents auf den Inhalt des Modals unterbinden, müsste das zum Ziel führen, versuche das:

    Code
            const modalContent = document.querySelector('div.modal-content');
            modalContent.addEventListener('touchstart', event => {
                event.stopPropagation();
            });
            modalContent.addEventListener('touchmove', event => {
                event.stopPropagation();
            });
            modalContent.addEventListener('touchend', event => {
                event.stopPropagation();
            });
  • Ich verfolge interessiert Eure Diskussion. Vor einiger Zeit hatte ich Bedarf an einem Modal, das ohne Framework auskommt, individuell anpassbar ist und sich – für mich besonders wichtig – auf Mobilgeräten mit dem Back-Button des Gerätes schließen lässt, ohne dass man gleichzeitig auch die Seite verlässt, von der aus das Modal geöffnet wurde. Dieses benutzerunfreundliche Verhalten findet man leider viel zu oft im Internet, die Bootstrap-Modale machen da keine Ausnahme.


    Falls Interesse daran besteht, ich füge den Code eines kompletten HTML-Dokuments hier ein. Aber natürlich möchte ich damit keinesfalls Euren derzeitigen Thread stören, zumal mein Modal Emess’ derzeitige Anforderung („Nur das Modal soll scrollen nicht die Seite im Hintergrund.“) nicht erfüllt.


    Einen schönen Sonntag allen unermüdlichen Webworkern!


  • Zitat von @Failix

    sich – für mich besonders wichtig – auf Mobilgeräten mit dem Back-Button des Gerätes schließen lässt, ohne dass man gleichzeitig auch die Seite verlässt, von der aus das Modal geöffnet wurde. Dieses benutzerunfreundliche Verhalten findet man leider viel zu oft im Internet, die Bootstrap-Modale machen da keine Ausnahme.

    Das ist ein interessanter Gesichtspunkt, hatte ich bisher gar nicht auf dem Schirm. Ich habe da eine Demo mit dem dialog-Element und werde versuchen, es dort einzubauen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!