Beiträge von nextuser

    Wenn du zwei Container nebeneinander setzen möchtest, die die gleiche ausgangsgröße Größe haben sollen, ist das doch der Beste Weg dazu.

    Inwiefern der beste Weg? Gerade auf das Beispiel, dass Grid vorzugsweise vor Flex zeigen soll?


    Man kann natürlich auch mit flex oder inline-block etc. arbeiten, dann ist das mit der gleichen Größe aber problematischer.

    NEIN!

    inline-block? Zum setzen einer gleichen Größe zweier Parts?

    Schon mal von flex-grow, flex-basis ect... gehört? Wo ist es problematisch?

    Dass ihr noch immer nicht versteht, dass der nur hier (wahrscheinlich automatisiert) postet um ein paar Tage später zurückzukommen und einen Link im Post zu platzieren.

    Doch, habe ich verstanden und bei diesem Beitrag auch sofort gedacht.

    Aber manchmal denkt man dan doch, das auch solche "Fragen" vielleicht echt sind und deshalb bin ich "sicherheitshalber :D " darauf eingegangen.


    Könnte ja durchaus sein, dass deine Prognose mal einen echten, fragenden trifft, daher...

    Ja, mit CSS-Grid (display: grid;) in Verbindung mit Flexbox (display: flex;).

    Grid braucht es hier nicht.

    Das was du mit Grid in deinem Beispiel machst (beiden Elementen im header die Hälfte der Fläche geben) ist absolut keine Begründung, um Grid ANSTATT Flex zu verwenden!

    Das ist mit Flex sehr gut selbst zu lösen.


    Zu deinem Code mal etwas meine Meinung:

    • <main> ist in den meisten Fällen nur einmal auf der Seite anzutreffen und bedarf keiner Klasse oder ID um im CSS eindeutig angesprochen zu werden.
    • <figure> kann man machen, würde ich hier aber weglassen, weil das Bild nicht mitten im eigentlichen Inhaltsfluss steckt sondern im <header> und auch keine ergänzenden Elemente wie eine Bildunterschrift besitzt, die ein <figure> üblicherweise als einzelnes Element mit "unabhängiger" Bedeutung zusammenfasst.
    • Ich bevorzuge im CSS zum Ansprechen von Kindelementen immer das größer-als-Zeichen ">" um wirklich auch nur die Elemente anzusprechen, die ich will. Beispiel:
      .content header // Spricht auch alle anderen <header> unterhalb von .content an.
      .content>header // Spricht nur den gewollten <header> an.
    • in "min-width: 1px" sehe ich absolut keinen Sinn.
    • deine margins mit 4 Angaben gehen auch kompakter mit 2 Angaben.
    • dein "margin: 0 auto 0 auto" wäre nicht nötig, hättest du es das Bild nicht in ein <figure> verpackt. "margin ... auto" ist aber auch nicht mehr zeitgemäß...
    • 4 Mal "@media all"? Warum nicht in einen Block?


    Ich würde dein Beispiel so umsetzen:

    Emess hatte den Text ja zuletzt auf dem Bild, daher hab ichs so gemacht...

    Du könntest zum Beispiel mal ältere Beiträge von mir lesen. Dann wirst du feststellen, dass ich immer das passende CSS für das jeweilige Problem empfehle und nichts gegen Flexbox habe, wenn es angebracht ist...

    Ja gut, ich hatte jetzt nicht vor dich zu analysieren.

    Ich hatte nur erwähnt, wie es auf mich wirkte und lag falsch, alles gut.


    Ob Flexbox (display: flex;) oder CSS-Grid (display: grid;) zur Lösung des jeweiligen Problems besser geeignet ist hängt nicht davon ab, aus wie vielen Seiten die Website besteht.

    Habe ich ja auch nicht gesagt.

    Mit "bei dem simplen OnePager" bezog ich mich auf den sehr bescheidenen Inhalt der Seite, nicht auf die Seitenzahl!

    Das dürfte der rest des Satzes aber auch so hergeben...

    Schau dir


    Code
    display: grid;


    mal genauer an.

    Das sehe ich anders.


    Ich selbst nutze für ein aktuelles Projekt zum Großteil grid mit flex im Detail, aber hier bei dem simplen Onepager mit keinen wirklichen Elementen & Struktur zum Layouten ist es für mich mit flex gut bedient.


    Deine letzten beiden Antworten wirken auf mich wie von Leuten die grid genutzt haben, jetzt bei absolut jeder Seite darauf schwören und im Endeffekt genau das machen, was du weiter oben mit "... leider einseitig auf ... fixiert" kritisierst.

    Kann sein, das ich es einfach nur falsch "rausgelesen" habe und du nicht zu dieser Gruppe gehörst, dann nichts für ungut.


    Ich würde anhand seiner aktuellen Seite aber bei flex bleiben.

    Habe ich eine falsche vorstellung von @mediaquerry?

    Entferne ich das margin-right aus der "body>header>section" passt erst mal die smartphoneansicht aber in der Desktopansicht steht die headline direkt neben dem Bild

    Ne du sollst es ja nicht aus body>header>section entfernen, sondern es einfach IN deinem Media-Query-Block überschreiben, damit die 30rem margin nicht für die Smartphone-Ansicht gelten.

    Ich habe das so verstanden. flex-direction richtet aus

    "row" -> nebeneinander

    "column" untereinander

    Ja.


    Das margin-right" steht ja nicht in der Smartponeansicht...

    Das hatte ich auch nicht gesagt. Ich sagte, das dein "margin-right" in der Smartphone-Ansicht fehl am Platz ist, also dass du es natürlich in deiner Media-Query für die Smartphone-Ansicht anpassen musst.


    wie ich jetzt die Section in der Smartphoneansicht ausrichten soll hat sich mir noch nicht erschlossen.

    Hab ich doch bereits gesagt.

    Und wie ich sehe, hast du es ja teilweise schon umgesetzt. Entferne in der Smartphone-Ansicht noch den margin-right und du hast deine section zentriert über dem Bild.


    Es tut mir leid wenn ich nerve

    Du nervst nicht.

    mit "diplay-flex" werden aber h1 und h2 nebeneinander dargestellt und ich müsst mit <br> arbeiten was ja wohl nicht optimal wäre

    Nein! Zum einen heißt es "display: flex", zum anderen kennst du doch schon die Eigenschaft "flex-direction".


    was wäre die Alternative?

    Nicht Alternative, sondern du musst dir erst mal im Klaren sein, was du überhaupt willst. Zwei Überschriften sicher nicht.

    Dein "Flexboxprojekt" wäre wohl die Headline, dein "Schaut doch mal rein" einfach nur ein Beitext.

    Da würde ich einfach nur mit <h1> & <p> arbeiten.

    Die h-Tags haben schon ihre Bedeutung und Gewichtung. Mal ganz davon abgesehen, dass auch Suchmaschinen sie entsprechend bewerten...


    Hat bei mir keine Auswirkung.

    Na das müsstest du aber mittlerweile schon erkennen können, was da nicht stimmt.

    In der Smartphone-Ansicht ist dein "margin-right: 30rem" natürlich fehl am Platz!

    Jetzt änderst du bei deinem header noch "justify-content: end" zu "justify-content: center" und ...

    Erstmal kurz:

    • "display: flexbox" gibt es nicht.
    • Es macht nicht viel Sinn, h2 UND h1 zusammen zu verwenden wenn der Inhalt dieses Abschnitts quasi nur aus einer Headline besteht. Schon garnicht in dieser Reihenfolge.
    • Man sollte keine section verwenden, um lediglich eine Headline zu verpacken. Da würde ich lieber einfach nur ein div verwenden.
      Wenn es nur eine simple Headline und das Bild ist, wäre hier vielleicht auch ein figure-Tag angebracht, gerade wenn der Text unter das Bild soll.


    Wie auch immer...

    Soll es unter dem Bild, verschieb deine section unter das Bild und nutze "flex-direction:column".

    Soll es mittig auf das Bild, gib deiner section "position: absolute".

    Doch was wenn ich Absatze unterschiedlich stylen will?

    Absätze innerhalb eines Textes unterschiedlich zu stylen ist eher ungewöhnlich.


    Aber man kann es natürlich auch machen.

    Wenn es nur 2 Absätze wären, würde ich mit ":first/last-of-type" arbeiten.

    Bei mehr, würde ich dann die oben erwähnte "Ausnahme" bzgl. Klassen nutzen.

    Weil in dem div.buttons die Elemente direkt unter einander gepackt werden, ist das jedoch nicht der Fall.

    Auch wenn du es direkt im nächsten Satz vervollständigst, ist dieser Satz an sich etwas falsch formuliert.


    Die Buttons (oder sonstige Element) werden NICHT nicht getrennt weil sie direkt untereinander gepackt sind, sondern weil das Elternelement keine (ausreichende) Höhe hat.

    Wann nutze ich id's und wann class?

    Ich nutzte sie so, wie es deren Bedeutung auch nahelegt:

    ID => Einmalig im Dokument. Elemente, die man direkt im CSS oder komfortabler in JS ansprechen möchte.

    Klassen => Elemente, die an verschiedenen Stellen im Dokument vorkommen (können), die aber einheitlich im CSS gestyled, oder gruppiert im JS angesprochen werden sollen.


    Elementen, die man sehr einfach mit CSS-Selektoren ansprechen kann (z.B. direkte Kindelemente einer ID oder des body-Körpers) gebe ich nichts.


    Für eine Section, ein einzelnes sich nicht wiederholendes Element. Etwas das nur einmal vorkommt, verwendet man "id" .

    Es geht nicht um "sich nicht wiederholendes Element" an sich. Gerade einmalige Sachen in einem Dokument brauchen oft keine ID.

    Eine ID sollte man vergeben, wenn man das entsprechende Element, und bequem auch direkt die Kindelemente ansprechen möchte/muss.

    In einem Bereich mit mehreren Sections, die jeweils einen eigenen "Abschnitt" repräsentieren und die man dann natürlich entsprechend ansprechen will, ist eine Id gut genutzt.


    Innerhalb der "id" verwendet man zb id="top" dann #top>ul>li und #top>ul>li>hover.

    Kann man, muss man aber nicht. Wenn man aber auch die Kindelemente ansprechen will, wie in deinem Beispiel, dann ist eine ID natürlich sehr sinnvoll!


    Eine class wird einmal definiert und greift wo sie im HTML angesprochen wird.

    Eine Klasse gibst du jedem Element, das du gleich ensprechen / manipulieren willst.

    Man könnte eine Klasse auch "anders" nutzen.

    Zum Beispiel gibt es auch Leute, die einmalige Abschnitte wie folgende:

    HTML
    <main>
        <section></section>
        <section></section>
        <section></section>
    </main>

    lieber mit Klassen anstatt Id's versehen, einfach nur, weil sie es im CSS schöner finden, die Elemente so anzusprechen:

    CSS
    main>.klasseX
    main>.klasseY
    main>.klasseZ

    Ich nutze es auch manchmal, allerdings nur in entsprechend für mich sinnvollen / schönen Stellen, wo eine ID keinen Sinn machen würde, ich das Element (meist Kindelement einer ID) aber trotzdem "namentlich" direkter ansprechen möchte...


    Doch wieso musste ich in der section about ".about-text" als klasse angeben?

    Wie kommst du darauf, dass du es musst?

    Würde folgendes empfehlen:

    • Bischen sinnvoller mit ID's & Klassen umgehen. Eindeutige, in der Seite einmalige Sachen sollten eine ID, wiederkehrende Elemente & Gruppierungen eine Klasse erhalten. Und das aber auch nur, wenn es nötig ist. So würde ich in deinem Code z.B.:
      • Bei deiner nav die Klasse "nav" entfernen und stattdessen z.B. die ID "menu" verwenden. Dem Brand / Logo auch eine ID und bei dem Rest im nav nichts. Ansprechen dann z.B. mit "#menu>ul..."
      • Deinen "toggle-button" nicht mit einem Link, sondern mit einem "echten" Button realisieren und die Klasse bei den spans entfernen.
      • Die ID "header" bei deinem Header entfernen. Da dieser Header der wirkliche Kopf der Seite ist und sich auf oberster Ebene (direktes Kindelement von body) außerhalb des eigentlichen Inhalts (main) befindet, würde ich ihn einfach mit "body>header" ansprechen. Das "größer-als Zeichen" spricht ja, wie du weißt nur DIREKTE Kindelemente an, daher sind andere header-Tags davon nicht betroffen.
      • Die 3 div's mit der Id / den Klassen "about / container / about-text" würde ich vollständig entfernen und stattdessen dem entsprechenden section-Tag die ID "about" geben, genauso, wie du es bei "kuli" gemacht hast.
      • Dem Footer die Klasse "footer" zu geben, finde ich nicht so prikelnd (genau wei nav & header ;) ). Auch die Seiten-Fußzeile braucht, da direktes Kindelement von body keine ID oder Klasse. Einfach auch hier mit "body>footer" ansprechen.
    • Javascript binde ich persönlich immer im head-Bereich ein und nutze ggf. DOMContentLoaded.
    • Bildern sollte man z.B. wegen möglicher Ladeprobleme oder für Leute mit Screenreadern mit dem alt-Attribut immer eine Beschreibung hinzufügen.


    Auch beim CSS könnte man manches anpassen. Zum Beispiel deine beiden identischen Media-Query-Blocks zu einem zusammenfassen. Oder ein Element, dessen Elternelement "display:flex" hat, nicht mit "margin:auto" zentrieren. Oder das du das gleiche verschieden ansprichst (".nav ul" und ".list-container ul"), usw...


    Dein Javascript würde ich, wie schon früher mal erwähnt auch entsprechend bischen anpassen.


    Aber gut, das erstmal so auf die Schnelle...

    Änder es mal so ab:


    Btw. wenn du dem header eh schon eine ID gegeben hast, würde ich die Klasse beim Bild weglassen und es mit "#header>img" ansprechen...