HTML/CSS Hilfe - zwei Textfelder mit Bild nebeneinander?

1 Antwort

Indem du das ganze in HTML mithilfe von <div>s wie folgt unterteilst:

Bild zum Beitrag

Um dann die zwei grün markierten Divs nebeneinanderzubekommen, kannst du dem Eltern-Element die CSS-Eigenschaft

display: flex; 

geben.

Ausserdem brauchen die Kinder (#main2 > div bzw. .col1, .col2) dann noch

width: 50%;

oder

flex: 1;

Selbiges, um die zwei gelben Sachen nebeneinanderzubekommen, da braucht dann das hellblaue div die flex-Eigenschaft. Wobei da vielleicht auch ein display: inline-block; bei den zwei gelben Elementen reichen könnte.

HTML:

<div id="main2">
   <div class="col1">
      <h3>Vivamus nec</h3>
      <div class="colElement">
        <img src="UE05/pic1.jpg" alt="spring flowers">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
      </div>
   </div>
   <div class="col2">
      <h3>Lorem ipsum</h3>
      <div class="colElement">
        <img src="UE05/pic1.jpg" alt="spring flowers">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.</p>
       </div>
   </div>
</div>

CSS:

#main2 {
  display: flex;
}
.col1, .col2 {
  flex: 1;
}
.colElement {
  display: flex;
}
 - (HTML, CSS)

regex9  31.01.2022, 21:15

Nur eine Ergänzung / ein Tipp von meiner Seite:

Sofern der Text im Paragraph das Bild beschreibt (bzw. sich darauf bezieht), würde es sich für eine bessere Semantik lohnen, die Boxen zu figure-Elementen umzugestalten.

Hierzu nur einmal das Markup:

<figure class="colElement">
  <img src="UE05/pic1.jpg" alt="spring flowers">
  <figcaption>Lorem ipsum ...</figcaption>
</figure>

So lange sich die Beschreibung nicht noch einmal in Text und kleiner Unterschrift unterteilt, würde ich wohl auf den Paragraph verzichten.

1
MrAmazing2  31.01.2022, 21:17
@regex9

Ah, kannte ich noch nicht, vielen Dank!

So lange sich die Beschreibung nicht noch einmal in Text und kleiner Unterschrift unterteilt

Und wenn dem doch so ist, dann kann man an der Stelle im Figure-Element einfach ein div verwenden, dass die beiden Sachen beinhaltet, oder?

0
regex9  31.01.2022, 21:19
@MrAmazing2

Ja, genau. Oder einfacher:

<figcaption>
  <h4>Some title</h4>
  <p>Lorem ipsum</p>
</figcaption>
1
Lisahuuu 
Fragesteller
 01.02.2022, 19:27

Vielen lieben Dank für die Antwort!! Könntest du mir eventuell noch weiter helfen? Stehe derzeit so da:

HTML:

<div id="main2">
   <div class="col2">
      <h3>Vivamus nec</h3>
      <img src="pic1.jpg" alt="spring flowers">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
   </div>
   <div class="col2">
      <img src="pic1.jpg" alt="spring flowers">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
   </div>
   <div class="col2">
      <img src="pic1.jpg" alt="spring flowers">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
   </div>
</div>
<div id="main3">
   <div class="col3">
      <h3>Vivamus nec</h3>
      <img src="pic1.jpg" alt="spring flowers">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
   </div>
   <div class="col3">
      <img src="pic1.jpg" alt="spring flowers">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
   </div>
   <div class="col3">
      <img src="pic1.jpg" alt="spring flowers">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
   </div>
</div>

CSS:

#main2 {
    text-align-all: left;
    width: 442px;
}

#main2 h3 {
    display: flex;
    color: yellowgreen;
    font-size: 20px;
}

#main2 .col2 p {
    color: #414141;
    line-height: 150%;
    margin-left: 15px;
    font-size: 9px;
}

#main2 .col2{
    margin-left: 35px;
}

#main2 .col2 img {
    display: flex;
    float: left;
    border: 5px yellowgreen;
    border-style: solid;
    margin-right: 15px;
}


#main3 {
    width: 442px;
}

#main3 h3 {
    display: flex;
    color: yellowgreen;
    font-size: 20px;
}

#main3 .col3 p {
    color: #414141;
    line-height: 150%;
    margin-left: 15px;
    font-size: 9px;
}

#main3 .col3{
    margin-left: 35px;
}

#main3 .col3 img {
    display: flex;
    float: right;
    border: 5px yellowgreen;
    border-style: solid;
    margin-right: 15px;
}

Aussehen tut es aber so: (kann kein bild einfügen also kommt eine Skizze)

H3

Bild + Text

Bild + Text

Bild + Text

H3 (Main3)

Bild + Text

Bild + Text

Bild + Text

Also untereinander und nicht nebeneinander

0
MrAmazing2  01.02.2022, 19:59
@Lisahuuu

Pack die zwei mains (#main2 und #main3) in einen weiteren Container, und gib diesem

display: flex;

und den beiden mains

flex: 1;
0
MrAmazing2  01.02.2022, 20:02
@Lisahuuu

display: flex ist übrigens immer für den Parent gedacht. Die Kinder werden dann nebeneinander dargestellt, sofern dazu der Platz reicht.

Deinem h3 oder img display: flex zu geben macht also wenig Sinn.

Das ganze funktioniert bei dir nur soweit, weil du die Sachen floatest, aber float solltest du eher vermeiden.

0
MrAmazing2  01.02.2022, 20:06
@Lisahuuu

Ausserdem solltest du dein h3 Element nicht in das .col3-Element miteinfügen.

0
MrAmazing2  01.02.2022, 20:23
@Lisahuuu

Hier:

HTML:

<div id="content">
  <div class="col col1">
     <h3>Vivamus nec</h3>
     <div class="row">
        <img src="pic1.jpg" alt="spring flowers">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
     </div>
     <div class="row">
        <img src="pic1.jpg" alt="spring flowers">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
     </div>
     <div class="row">
        <img src="pic1.jpg" alt="spring flowers">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
     </div>
  </div>
  <div class="col col2">
     <h3>Vivamus nec</h3>
     <div class="row">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
        <img src="pic1.jpg" alt="spring flowers">
     </div>
     <div class="row">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
        <img src="pic1.jpg" alt="spring flowers">
     </div>
     <div class="row">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
        <img src="pic1.jpg" alt="spring flowers">
     </div>
  </div>
</div>

CSS:

#content {
  display: flex;
}
.col {
   flex: 1;
   width: 442px;
}
.col h3 {
    color: yellowgreen;
    font-size: 20px;
}
.row {
    display: flex;
}
.row p {
    color: #414141;
    line-height: 150%;
    font-size: 9px;
}

.row img {
  border: 5px yellowgreen;
  border-style: solid;
  margin-right: 30px;
}

.col2 .row img {
  margin-right: 0px;
  margin-left: 30px;
}

Siehe: https://jsfiddle.net/fwcr85vn/

0