Beiträge von Sempervivum

    Da war noch ein Fehler drin: Eventlistener wurde mehrfach registriert wenn man mehrere Instanzen anlegt. Hier die korrigierte Klasse:

    Wenn Du viel gelesen hast, hilft es wahrscheinlich auch nicht, einen weiteren Link zu posten. Häufig hilft ein Beispiel weiter, sieh dir dieses Codepen an:

    xxMYooK
    ...
    codepen.io

    nth-child nimmt alle Elemente her und prüft das 2-te. Ist es ein p-Element wird es genommen.

    Die zweite Regel nimmt von allen Elementen das 2-te und prüft ob es ein h1- Element ist. Da es jedoch ein p-Element ist, passiert gar nichts.

    nth-of-type nimmt nur die p-Elemente und nimmt davon das 2-te (die dritte Regel).

    In den allermeisten Fälle tut nth-of-type das, was man möchte.

    Das ganze ist schon ein wenig undurchsichtig und deshalb habe ich auch früher geschrieben, dass auch Klassen den Vorteil haben, dass es klarer ist, was passiert.

    Liebe Forengemeinde,

    ein select zu stylen ist leider nur sehr eingeschränkt möglich. Ich kenne die Alternativen Select2 und Selectize, die sind hervorragend aber alles andere als leichtgewichtig. Daher bin ich daran gegangen und habe eine schlanke Alternative programmiert, mit der Einschränkung, dass Multi-Select nicht unterstützt wird.

    Hier meine Demo:

    Funktioniert sehr gut aber es wurde der Einwand laut, dass es aus dem Gesichtspunkt der Zugänglichkeit nicht optimal ist. Wie beurteilen das die Experten für dieses Thema?

    Beste Grüße, Ulrich

    Ich habe zunächst mal im Seiteninspektor provisorisch den Zeilenabstand kräftig erhöht, damit das Scrolling aktiv wird:

    Code
    .grid-container {
        display: grid;
        grid-template-columns: 1fr 3fr 8fr 3fr;
        gap: 1em;
        row-gap: 10vh;
    }

    Dann für .modal-content die Höhe begrenzt, ebenfalls, damit das Scrolling greift, und die Elemente mit Flex angeordnet:

    Code
    .modal-content {
        /* hier drüber wie bisher */
        height: 70vh;
        display: flex;
        flex-direction: column;
    }

    Und für .modal-body das Scrollen eingeschaltet durch overflow: auto;

    Code
    .modal-body {
        padding: 2px 16px;
        flex: 1;
        overflow: auto;
    }

    Versuche mal ob dich das weiter bringt.

    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.

    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();
            });

    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.

    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.

    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.

    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.