flex:boxen automatisch umbrechen + mittig ausrichten mit justify-content

  • Ich wollte einen Überschrift in dem Header zentrieren. Geht das auch mit justify-content: center; ?

    Komischerweise wird das ignoriert.


    Darüber hinaus möchte ich möchte ich mehrere horizontale ausgerichtete Boxen darstellen.

    Maximal drei in einer Reihe, sodass der Rest automatisch in die nächste Zeile umbricht. Das Problem ist nur, dass flex: 1; oder auch andere Breitenangaben ignoriert werden. Stattdessen werden alle Boxen in einer Reihe platziert unabhängig von flex-wrap: wrap. Ich habe einen Workaround mit einen Break gefunden, welcher soweit funktioniert. Ist das so korrekt oder gibt es eine andere Lösung ? Warum werden die Breitenangaben ignoriert ?




  • thanks my issue has been fixed.

  • Zu der ersten Frage rate ich mal: Dein HTML sieht so aus:

    Code
        <header>
            <h1 class="header_title">Die Überschrift</h1>
        </header>

    In dem Fall ist absolute Positionierung eine denkbar schlechte Lösung, nur um etwas zu zentrieren. Ein simples text-align: center; ist ausreichend.

  • OK, aber erstens ändert das nichts, der Titel bzw. die Überschrift lässt sich mit text-align: center; problemlos zentrieren.

    Und zweitens, wenn du schreibst, dass es sich um eine Überschrift handelt, ist es angebracht, dafür auch das entspr. Tag zu verwenden also <h1> <h2> ...

  • Danke, das übernehme ich mit padding um es vertikal mittig auszurichten :)


    Interessehalber warum funktioniert das justify-content nicht ? Was ist richtig zum zentrieren eines wrappers margin: 0 auto; oder justify-content: center; ?

  • Das ist keine "entweder - oder" Frage. Für bestimmte Elemente gibt es entsprechende Möglichkeiten im CSS.


    Texte werden mit text-align: center; zentriert.


    justify-content ist halt für bestimmte Container gedacht und grade nicht für Texte. Deine Beispiele ohne Inhalt helfen nicht weiter um dir zu helfen. So kann ich nur vermuten dass dir die Grundlagen für ein korrektes HTML fehlen, die aber für die richtige Anwendung vom CSS Voraussetzung sind.

  • Dann konkreter. Die Frage war ja jetzt nicht spezifisch auf das obige bezogen. Ich zentriere den Hauptcontainer/Wrapper einer Seite immer mit margin: 0 auto;.


    Ich wollte eigentlich nur wissen ob das in einem Flexlayout so zulässig ist. Das ist Alles.


    Justify-content: center;&align-items: center; scheinen bei diesem Aufbau nicht zu funktionieren. Ist das überhaupt sinnvoll hierbei darauf zurückzugreifen ?



  • Zitat

    scheinen bei diesem Aufbau nicht zu funktionieren

    Der Aufbau ist auch kein korrektes HTML. Das ist veraltet und zusätzlich auch nach den alten Regeln nicht regelgerecht.


    Da du offensichtlich aktuelles CSS verwenden willst solltest du auch das dazu passende aktuelle HTML verwenden. Der Quelltext könnte dann so aussehen:


  • Das Beispiel habe ich nach der Frage von wakeme eingefügt, da habe ich seine Frage nicht gesehen.


    Die Flexanwendung in deinem Beispiel ist sinnfrei, da Blockelemente sowieso untereinander stehen. Bei CSS gilt das gleiche wie beim HTML: Unnötige Angaben sind nach den aktuellen HTML5- und CSS3-Regeln zu vermeiden.

  • Ich habe mich bei selfhtml eingelesen und mein derzeitiges Projekt überarbeitet.

    Wenn irgendwas unsauber ist wäre es schön, wenn man mich darauf hinweist damit ich daraus lernen kann.


    Das zweite Problem ist weiterhin vorhanden. Diese zweite Datei ist eine Unterseite. Ich möchte, dass drei Boxen die volle Breite von main ausnutzen und der Rest in die zweite Zeile umbricht. Das funktioniert nicht so richtig.

  • Zitat

    Ich möchte, dass drei Boxen die volle Breite von main ausnutzen und der Rest in die zweite Zeile umbricht.

    Einfacher als mit Umbrüchen erreichst Du das mit Gridlayout:

    Code
    aside {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
    }

    Die Hilfselemente für die Umbrüche musst Du dann natürlich heraus nehmen. Und flex-basis für .box ist dann überflüssig.

    Und den main-Container auf volle Breite setzen:

    Code
    main {
        margin: 0 auto;
        max-width: 950px;
        flex: 1;
        width: 100%;
    }

    Ich glaube, früher hattest Du geschrieben, dass die Elemente auf maximal drei Spalten verteilt werden sollen. Das kannst Du leicht mit Mediaqueries umschalten, so dass es bei schmalem Browserfenster weniger Spalten werden.

  • Zitat

    Kann ich Grid&Flex beliebig kombinieren ?

    Ja, wenn ein Layout etwas komplexer ist mit mehreren Container kann der Fall eintreten, dass für einen Flex und für den anderen Grid besser geeignet ist, um das gewünschte Layout zu erzielen.

  • PS: Ich sehe gerade, was die "leeren" li-Tags betrifft, hatte ich mich von der Anzeige des HTML-Inspektors täuschen lassen. Es gibt keine leeren sondern bei den schließenden </li> hattest Du den Schrägstrich vergessen.

Jetzt mitmachen!

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