[gelöst] Bild responive machen

  • Wie komme ich ein Bild richtig responive?

    "img-fluid!" kenn ich von Bootstrap Wie geht das mit der Flexbox.

    Hab natürlich viel Seiten gelesen, mit Igel und vielen weiteren Beispielen.

    Die einzige Erkenntnis die ich gewonnen habe ist wohl das Zauberwort "grid" doch wie sieht das in meinem Falle aus?

    hier mal der Code und das Problem. Natürlich auch online einzusehen. my2.emess62.de

    respo.png

  • Ä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...

  • Super freu mich sehr.

    der Tipp mit "#header>img" gefällt mir gut

    Mag, bevor ich weitet an den Content #aboutme weitermache, jemand noch mal über meinen Code schauen

    und mir sagen was ich besser bzw kürzer machen kann?

  • 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...

  • Um diesen Tread mal abzuschließen am Ende eine Frage.

    so sieht es jetzt mit euerer Hilfe aus. (das eine oder andere Licht ist aufgeleuchtet)

    Wann nutze ich id's und wann class?

    Ich verstehe es jetzt so.

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

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

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

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

  • 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?

  • 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.

  • mir ist gelungen die Startseit mit Überschriften in einer Flexbox zu erstellen. ( Stolz erfüllt mein altes Herz)

    Allerdings ist mein Code in den @mediaquerry eher suboptimal.

    Die Überschrift sollen in der Smartphonansicht unter dem Bild oder von mir aus auch teils auf dem Bild mittig dargestellt sein.

    HTML
    <header>
        <section>
            <h2>Flexboxprojekt</h2>
            <h1>Schaut doch mal rein</h1>
        </section>
            <img src="img/kasper.png">
        </header>

    sec.png


    da brauche ich wieder Hilfe

  • 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".

  • Zitat
    • "display: flexbox" gibt es 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

    Zitat
    • 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.


    was wäre die Alternative?

    Zitat
    • 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".


    Hat bei mir keine Auswirkung . ich lade das Resultat noch mal hoch.

    https://my2.emess62.de/

  • 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 ...

  • Zitat

    zum anderen kennst du doch schon die Eigenschaft "flex-direction".

    Ich habe das so verstanden. flex-direction richtet aus

    "row" -> nebeneinander

    "column" untereinander

    Das margin-right" steht ja nicht in der Smartponeansicht sondern soll die "section" auf der Hauptachse nach links bringen


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

    Es tut mir leid wenn ich nerve

  • 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.

  • 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.


    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.

    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

    ins.png

Jetzt mitmachen!

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