• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Listen Darstellung

benbalthasar

Mitglied
Hallo

versuche gerade folgendes:

Das Bild soll in einer Zeile stehen, darunter der Titel und darunter das Datum.
Danach soll eine weiter Liste kommen, wo nur die Filenamen angezeigt werden.

Sinn der Übung soll sein, das ich am Ende die erste Liste nach links und die zweite mit den Filenames daneben setzen kann. Sollte es mir was anderem als einer Liste besser gehen bin ich dafür auch offen.

Habe dafür bisher folgenden Code verwendet:

HTML:
<ul>
        <?php foreach ($bestellung_galerie as $row) { ?>   
            <li>
                <img src="<?php echo $row['pfad'];?>thumb/<?php echo $row['index_filename'];?>" />
            </li>
            <li>
                <?php echo $row['titel'];?>
            </li>
            <li>
                <?php echo $row['datum'];?>
            </li>
               
           
            <?php foreach ($row['filename'] as $filename): ?>
            <ul>
            <li>
                <?php echo $filename; ?> 
            </li>
                </ul><?php endforeach; ?>
       
        </ul>
        <?php } ?>
 
Werbung:
Hallo

Deine Beschreibung ist leider sehr diffus und damit nicht nachvollziehbar. Ein Quelltext mit für uns nicht nachvollziehbaren php-Angaben hilft da leider auch nicht weiter.

Wie groß sind die Bilder? Sind alle gleich groß? Wie umfangreich sind die Texte? Einzeilig? Mehrzeilig? Alle Texte gleich lang? und und und

Ich verstehe es zur Zeit so: Du hast jeweils zusammengehörig: Ein Bild, einen Titel, ein Datum und einen Dateinamen. Das ganze soll mit unterschiedlichen Inhalten mehrmals auf der Webseite angezeigt werden.

ol- oder ul-Listen sind da eher nicht angebracht. Eher schon eine dl-Liste. Die Ansicht / das Layout kann mittels Flexbox geregelt werden.

Gruss

MrMurphy
 
Zuletzt bearbeitet:
Hallo,

sorry aber die Seite ist nicht öffentlich, daher kann ich nicht einfach drauf verlinken. Welche Möglichkeiten hätte ich noch die Seite im Live Modus zu zeigen.
 
Werbung:
Werbung:
Hallo

Ich sehe auch keinen Link.

Außerdem benötigen wir noch Angaben wie die Daten angezeigt werden sollen. Das kann zumindest ich deinen bisherigen Informationen nicht entnehmen.

Gruss

MrMurphy
 
Hallo

Ich bin mir noch nicht sicher dich richtig verstanden zu haben.

Für dein Layout sind Listen nicht geeignet. Du hast eher mehrere gleichartig aufgebaute Informationsblöcke mit strukturiertem Inhalt.

Als umgebendes Element sehe ich ein article-Element.

In das kommt für jedes Bild mit zugehörigem Text ein section-Element.

In das section-Element kommen zur Unterteilung zwei div-Elemente. In das erste div dann Bild, Titel und Datum. In das zweite div die Dateinamen.

Zur Ausrichtung wird Flexbox verwendet. Das hat zudem den Vorteil, dass alle nebeneinanderliegenden section- und div-Elemente gleich hoch sind.

Der Quellcode könnte dann folgendermaßen aussehen:

Code:
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="utf-8">
  <title>Galerie Layout 02</title>
  <meta name="description" content="HTML5, CSS3">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!--[if lt IE 9]>
  <script src="http://html5shiv-printshiv.googlecode.com/svn/trunk/html5shiv-printshiv.js"></script>
  <![endif]-->
  <style>

  /*Icon-Font - font-family: 'FontAwesome';*/
  @import url(http://fontawesome.io/assets/font-awesome/css/font-awesome.css);
  /*Überschriften - font-family: 'Dosis';*/
  @import 'https://fonts.googleapis.com/css?family=Dosis';
  @import 'https://fonts.googleapis.com/css?family=Dosis:700';
  /*Fließtext - font-family: 'Ek Mukta';*/
  @import 'https://fonts.googleapis.com/css?family=Ek+Mukta';
  /*Zahlen* - font-family: 'Merriweather';*/
  @import url(https://fonts.googleapis.com/css?family=Merriweather);

  @media all {
  header, nav, main, aside, footer, section, article, figure, figcaption, audio, video {
  display: block;
  }
  * {
  box-sizing: border-box;
  min-width: 0;
  }
  html {
  font-family: sans-serif;
  font-size: 120%;
  line-height: 1.3;
  }
  body {
  width: 96%;
  margin: 1rem auto;
  }
  }

  /*Schriften*/
  @media all {
  html {
  font-family: Sans-Serif;
  font-size: 120%;
  line-height: 1.3;
  }
  h1 {
  font-family: 'Dosis';
  font-size: 1.2rem;
  letter-spacing: 0.1rem;
  margin: 0.5rem 0 0 0;
  }
  h2, h3, h4, h5, h6 {
  font-family: 'Dosis';
  font-size: 1rem;
  margin: 0.5rem 0 0 0;
  }
  p, li, dl, dt, a, address {
  font-family: 'Ek Mukta';
  font-size: 1rem;
  font-style: normal;
  margin: 0.5rem 0 0 0;
  }
  figcaption {
  font-family: 'Ek Mukta';
  font-size: 0.9rem;
  margin: 0.5rem 0 0 0;
  }
  }

  /*Navigation footer*/
  @media all {
  footer p>a,
  footer p>a:link,
  footer p>a:visited {
  background-color: transparent;
  color: blue;
  text-decoration: none;
  outline: none;
  }
  footer p>a:hover,
  footer p>a:focus,
  footer p>a:active {
  background-color: antiquewhite;
  color: blue;
  text-decoration: underline;
  outline: none;
  }
  }
  @media all {
  footer p>a::before {
  font-family: FontAwesome;
  font-size: 0.8rem;
  content: "\f08e";
  display: inline-block;
  padding-right: 0.3rem;
  }
  }

  /*Grafiken*/
  @media all {
  figure {
  min-width: 0;
  max-width: 100%;
  margin: 0;
  }
  img {
  /*text-align: bottom;*/
  min-width: 0;
  display: block;
  max-width: 100%;
  /*max-height: 100vh;*/
  border: 0;
  }
  }

  /*Spezielle Einstellungen*/
  @media all {
  .galerie {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  }
  .galerie section {
  padding: 0.5rem;
  border: 1px solid gray;
  border-radius: 0.5rem;
  margin: 1rem 0.5rem 0 0.5rem;
  flex-grow: 1;
  flex-shrink: 1;
  flex-basis: calc(50% - 1rem);
  }
  .galerie img {
  border-radius: 0.5rem;
  }
  .galerie h2 {
  font-family: 'Ek Mukta';
  margin: 0.5rem 0.3rem 0 0.3rem;
  }
  .galerie p {
  margin: 0 0.3rem;
  }
  .galerie section {
  min-width: 14rem;
  max-width: 25rem;
  display: flex;
  }
  .galerie section div:nth-child(1) {
  flex-grow: 1;
  flex-shrink: 1;
  flex-basis: calc(50% - 1rem);
  }
  .galerie section div:nth-child(2) {
  padding-left: 1rem;
  flex-grow: 1;
  flex-shrink: 1;
  flex-basis: calc(50% - 2rem);
  }
  }

  /*Flexbox für IE*/
  /*-ms-flex-preferred-size: calc(50% - 1rem);*/
  /*Vorlage für das gesamte CSS*/
  @media all {
  }
  /*Vorlage zum Kopieren für Media Queries - Mobile first*/
  @media only screen and (min-width: 0px) {
  }
  /*Vorlage zum Kopieren für Media Queries - Desktop first*/
  @media only screen and (max-width: 0px) {
  }

  </style>
</head>
<body>
  <header>
  <h1>benbalthasar: Layout</h1>
  </header>
  <nav>
  </nav>
  <main>
  <p>Es sollen Bilder mit jeweils zugehörigen Titel und Datum angezeigt werden. Rechts daneben dann jeweils ein oder mehrere Dateinamen.</p>
  <article class="galerie">
  <section>
  <div>
  <img src="http://lorempixel.com/600/400/sports/5" alt="Beispielbild">
  <h2>BMX-Rennen</h2>
  <p>August 2016</p>
  </div>
  <div>
  <p>img05.jpg</p>
  </div>
  </section>
  <section>
  <div>
  <img src="http://lorempixel.com/600/400/sports/2" alt="Beispielbild">
  <h2>Surfen</h2>
  <p>Mai 2010</p>
  </div>
  <div>
  <p>img02.jpg</p>
  <p>img04.jpg</p>
  </div>
  </section>
  <section>
  <div>
  <img src="http://lorempixel.com/600/400/sports/3" alt="Beispielbild">
  <h2>Radrennen</h2>
  <p>November 2011</p>
  </div>
  <div>
  <p>img03.jpg</p>
  <p>img23.jpg</p>
  <p>img33.jpg</p>
  <p>img43.jpg</p>
  <p>img53.jpg</p>
  <p>img63.jpg</p>
  <p>img73.jpg</p>
  <p>img83.jpg</p>
  <p>img93.jpg</p>
  <p>img103.jpg</p>
  </div>
  </section>
  <section>
  <div>
  <img src="http://lorempixel.com/600/400/sports/6" alt="Beispielbild">
  <h2>Fußball</h2>
  <p>Mai 2016</p>
  </div>
  <div>
  <p>img06.jpg</p>
  </div>
  </section>
  </article>
  </main>
   <footer>
   </footer>
</body>
</html>

Und ein Link zum direkten Ausprobieren:

http://boratb.bplaced.net/index30.html

Gruss

MrMurphy
 
Zuletzt bearbeitet:
Werbung:
Da es hier die gestalterische Umsetzung eines Seitenlayouts betrifft, wird das Thema von HTML nach CSS verschoben.
 
Genau so habe ich mir das vorgestellt. Werde ich direkt mal probieren. Vielen Dank

Edit: Habe es mal auf meiner Seite geändert, aber irgendwie scheine ich nicht damit klar zu kommen. Es ist jetzt alles verschoben.

Hier mal noch der PHP Code, da man diesen so nicht sehen kann.

Code:
<div class="blogpost">
   <div class="blogpost_border">
     
     <div class="blogpost_header">
       <h2 class="title"><span>Einzelbilder</span></h2>
     </div>
   
     <div class="blogpost_text">

     <article class="bestellgalerie">
       <section>
     <div>
     <?php foreach ($bestellung_galerie as $row) { ?>   
     <img src="<?php echo $row['pfad'];?>thumb/<?php echo $row['index_filename'];?>" />
 
       <h3><?php echo $row['titel'];?></h3>
       <p><?php echo $row['datum'];?></p>
   </div>
   <div>
     <?php foreach ($row['filename'] as $filename): ?>
     <p><?php echo $filename; ?> <?php endforeach; ?> </p>
   </div>
  </section>
  </article>
     
   
     <?php } ?>   
     
     </div>
   </div>
</div>

   


<div id="inhalt_hr"></div>


<img id="inhalt_banner" src="images/banner.png" alt="banner">
 
Zuletzt bearbeitet:
Edit: Habe es mal auf meiner Seite geändert, aber irgendwie scheine ich nicht damit klar zu kommen. Es ist jetzt alles verschoben.

Hier mal noch der PHP Code, da man diesen so nicht sehen kann.
Der PHP-Code ist hier im CSS-Forum nicht von Interesse.

Vielmehr mußt Du die Ausgabe davon, also den HTML-Code, sowie den verwendeten CSS-Code zeigen.
 
Werbung:
Hallo

Vielmehr mußt Du die Ausgabe davon, also den HTML-Code, sowie den verwendeten CSS-Code zeigen.

Hat er doch:

Habe es mal auf meiner Seite geändert,

Also

http://test.ben-balthasar.de/index.php?site=bestelleinzel&user=4&status=1

@benbalthasar

Der Quelltext enthält leider jede Menge Fehler, die zunächst beseitigt werden müssen. Unter anderem enthält er nicht die von mir genannte Struktur:

https://validator.w3.org/nu/?doc=http://test.ben-balthasar.de/index.php?site=bestelleinzel&user=4&status=1

Das liegt offenbar auch am Zusammenspiel von HTML und PHP, wobei ich mich mit PHP nicht auskenne.

Ich habe mal das notwendige CSS herausgesucht, welches du zunächst komplett übernehmen solltest. Wenn es funktioniert kannst du es erweitern oder kürzen:

Code:
      .bestellgalerie {
         min-width: 0;
         display: flex;
         flex-wrap: wrap;
         justify-content: space-around;
      }
      .bestellgalerie section {
         min-width: 14rem;
         max-width: 25rem;
         display: flex;
         flex-grow: 1;
         flex-shrink: 1;
         flex-basis: calc(50%);
      }
      .bestellgalerie section div {
         min-width: 0;
      }
      .bestellgalerie section div:nth-child(1) {
         flex-grow: 1;
         flex-shrink: 1;
         flex-basis: calc(50%);
      }
      .bestellgalerie section div:nth-child(2) {
         padding-left: 1rem;
         flex-grow: 1;
         flex-shrink: 1;
         flex-basis: calc(50% - 1rem);
      }
      .bestellgalerie img {
         min-width: 0;
         display: block;
         max-width: 100%;
         border: 0;
      }

Einige Angaben sind für bestimmte Browser, andere beseitigen grundsätzliche Flexboxprobleme. Zum Beispiel das häufige min-width: 0. Von daher solltest du nur Angaben löschen wenn du dir über die Auswirkungen im klaren bist.

Die "flex-basis: calc"-Angaben sind teilweise sogenannte Erinnerungswerte, wie ich sie nenne. Einige Browser schalten bei Flexbox grundsätzlich ins Content-Modell. Alle Breitenangaben müssen dann berücksichtigt werden, also padding, border und margin.

Wenn das section-Element zum Beispiel einen umgebenden Rahmen (border) von 2px erhält, muss

Code:
flex-basis: calc(50%);

zu

Code:
flex-basis: calc(50% - 4px);

geändert werden. Zwei mal die seitlichen 2px.

Gruss

MrMurphy
 
Ok, habe mal das CSS komplett kopiert, aber leider ändert es nur die erstes Bildchen.
Habe die Vermutung das ich irgendwo beim ausgeben via php nen Fehler drin habe.
Vlt. wäre es sinnvoll wenn jemand mal drüber schaut, der Ahnung von php hat.

Vlt. kann es ein Mod ja mal verschieben oder ich poste das Problem nochmal im php Bereich.
 
Werbung:
Zurück
Oben