stabiles layout-grid mit fotos

stabiles layout-grid mit fotos

Beitragvon einbeiniger » 01.10.2010, 09:41

hey,

ich habe nur wenig erfahrung mit css layouts. ich bin mir sicher, es gibt intelligentere ansätze, mein layout-problem zu lösen, als meine aktuelle version:

ich versuche, auf der startseite von http://www.alexbrunner.com (die seite ist zum nachprüfen live) das layout so gestalten, dass - zusätzlich zu einem header-div (logo und menü) und einem footer-div (lizenz und kontakt) ein gitter aus fotos mit stets der selben höhe (250px) stabil fotos nebeneinander und untereinander anzeigt, wobei jeweils die gesamtbreite 800px ergibt. im endeffekt würde so ein rechteck entstehen, das alle fotos gleichmäßig - mit einem zwischenrand von jeweils 4px - anordnet.

nachdem ich das in verschiedenen ansätzen nicht durch mein css-coding lösen konnte, habe ich in der aktuellen version jeweils weiße zwischenbilder eingefügt (also etwa: foto-weiß-foto), da mir das stabiler erschien. in firefox 3.6.10 auf mac os 10.5.8 funktioniert das, in chrome jedoch zb nicht (dort werden die bilder unregelmäßig untereinander und ohne zwischenräume angezeigt).

ich suche eigentlich nach einer eleganten css lösung - wahrscheinlich muss auch das markup umgestaltet werden? - dh ich bin auch froh um hinweise, wie ich das layout auch mit dem aktuellen hover-effekt stabil gestalten kann. das hauptproblem dabei: ich möchte das layout gern flexibel gestalten, also in em angeben, nicht in pixel; gleichzeitig möchte ich die größe der fotos aber nicht vom browser berechnen lassen, sondern durchaus in fixen pixeln beschreiben.

ich freue mich sehr über jeden kommentar!

vielen lieben dank,
alex


HTML:
Code: Alles auswählen
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-gb">

<head>
<title>...</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/hover.js"></script>
</head>

<body>
<div id="header-left" style="border-bottom: none">...</div>
<div id="header-right" style="border-bottom:none">...</div>

<div id="home" align="center"><div id="innerhome"><p>

   <span class='wrapper' >
      <img src='images/ecuador.jpg' height="250px" width="300px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span>
   
    <span><img src="images/space.gif" height="1px" width="4px" /></span>
   
    <span class='wrapper'>
      <img src='images/lofoten.jpg' height="250px" width="496px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span>
   
    <span><img src="images/space.gif" height="4px" width="800px" /></span>
   
    <span class='wrapper'>
      <img src='images/iceland.jpg' height="250px" width="800px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span>
   
    <span><img src="images/space.gif" height="4px" width="800px" /></span>
   
    <span class='wrapper'>
      <img src='images/nyc.jpg' height="250px" width="202px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span>
   
    <span><img src="images/space.gif" height="1px" width="4px" /></span>
   
    <span class='wrapper'>
      <img src='images/iran.jpg' height="250px" width="350px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span>
   
    <span><img src="images/space.gif" height="1px" width="4px" /></span>
   
    <span class='wrapper'>
      <img src='images/uganda.jpg' height="250px" width="240px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span>
   
    <span><img src="images/space.gif" height="4px" width="800px" /></span>
   
    <span class='wrapper'>
      <img src='images/scotland.jpg' height="250px" width="496px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span>
   
    <span><img src="images/space.gif" height="1px" width="4px" /></span>
   
    <span class='wrapper' >
      <img src='images/burma.jpg' height="250px" width="300px" />
      <span class='description'>
           <div class="description_header">...</div>
      <div class='description_content'>...</div>
      </span>
   </span></p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
</div></div>

<div id="footer-left">...</div>
<div id="footer-right">...</div>
</body>
</html>


CSS:
Code: Alles auswählen
@charset "UTF-8";
/* CSS Document */

/* layout */
html {
   font-size: 100%;
}

body {
   font-size: 1em;
   font-family: Georgia, "Times New Roman", Times, serif;
   color: #333333;
   width: 50em;
   margin: 0 auto;
   padding: 0;
}

#header-left {
   height: 4em;
   width: 25em;
   float: left;
   border: 0;
   padding: 0;
   margin: 0;
   border-bottom: 0.05em dotted #333333;
}

#header-right {
   height: 4em;
   width: 25em;
   float: right;
   border: 0;
   padding: 0;
   margin: 0;
   border-bottom: 0.05em dotted #333333;
}

#home {
   clear: both;
   width: 50em;
   border: 0;
   padding: 0.5em 0 0 0;
   margin: 0;
}

#innerhome {
   width: 800px;
   border: 0;
   padding: 0;
   margin: 0;
}

#left {
   clear: both;
   width: 13em;
   float: left;
   border: 0;
   padding: 0;
   margin: 0;
}

#content {
   width: 21.5em; /* 24 */
   float: left;
   border: 0;
   padding: 1em 2em 1em 0.5em;
   margin: 0;
}

#content-large {
   width: 36.5em; /* 37 */
   float: left;
   border: 0;
   padding: 1em 0 1em 0.5em;
   margin: 0;
}

#right {
   width: 13em;
   float: right;
   border: 0;
   padding: 0;
   margin: 0;
}

#footer-left {
   clear: both;
   float: left;
   width: 32em;
   border: 0;
   padding: 1.25em 0;
   margin: 0;
   border-top: 0.05em dotted #333333;
}

#footer-right {
   float: right;
   width: 18em;
   border: 0;
   padding: 1.25em 0;
   margin: 0;
   border-top: 0.05em dotted #333333;
}

p, li {
   font-size: 0.75em;
   font-weight: 400;
   text-align: justify;
   padding: 0;
   border: 0;
   margin-top: 0;
}

p span {
   display: block;
   float: left;
   border: none;
   margin: none;
   padding: none;
}

a:link {color: inherit; text-decoration: none; border-bottom:1px dotted;}
a:visited {color: #FF6600; text-decoration: none; border-bottom:1px dotted;}
a:hover {text-decoration: none; color: #FF6600;}
a:active {color: #FF6600; text-decoration: none;}
a.navi:hover {text-decoration: none;}

img {
   border: none;
   margin: none;
   padding: none;
}

/* front hover */
.wrapper {
   position: relative;
}

.description {
   position: absolute;
   bottom: 0;
   left: 0;
   display: none;
   background-color: #00AAFF;
}

.description_header {   
   padding: 10px 0 2px 20px;
   text-align: left;
   font-family: 'palatino linotype',baskerville,'times new roman',serif;
   font-size: 2.681em;
   line-height: 1.733em;
   font-weight: 400;
   font-style: italic;
   color: #FFFFFF;
   letter-spacing: -0.039em;
}

.description_content {
   padding: 0 20px;
   text-align: left;
   font-family: Georgia, "Times New Roman", Times, serif;
   font-size: 0.975em;
   font-weight: 400;
   color: #FFFFFF;
}
einbeiniger
neu hier
 
Beiträge: 4
Registriert: 01.10.2010, 08:56

Re: stabiles layout-grid mit fotos

Beitragvon sejuma » 01.10.2010, 13:05

Zwei unterschieldiche Einheiten bekommst du nicht auf einen einheitlichen nenner. Deshalb würde ich was die Bild- und Seitenbreite betrifft bei Pixeln bleiben.

Die Spacer-gifs sind m.E. unnötig. Das kannst du auch per border-Angaben lösen.

Da die Breite der Bilder ja offensichtlich so berechnet ist, dass je nachdem 1, 2 oder drei Fotos in eine reihe passen, bietet sich für diesen Zweck auch eine ul-Liste an.
Bei definierter Breite von ul erfolgt der Umbruch dann automatisch, wenn kein li mehr reinpasst.

Als Denkanstoß: http://www.ohne-css.gehts-gar.net/0020.php
Bild
sejuma
Vielposter
 
Beiträge: 805
Registriert: 15.07.2009, 17:46

Re: stabiles layout-grid mit fotos

Beitragvon einbeiniger » 03.10.2010, 22:47

Danke! Mir gefällt die Idee einer ul sehr gut, da es auch semantisch entspricht. Allerdings bekomme ich das Layout nicht so hin, dass es wirklich so aussieht, wie es soll.

Ich denke, der Knackpunkt ist der automatische indent, den eine ul hat. Versuche ich, diesen zu entfernen, indem ich hinzufüge:

Code: Alles auswählen
#innerhome ul {
    list-style: none;
    margin-left: 0;
    padding-left: 1em;
    text-indent: -1em;
}

#innerhome li {
    float: left;
}


so überschneiden sich die Fotos. Füge ich es jedoch nicht hinzu, so rücken die Fotos nach rechts hinein, was natürlich nicht in meinem Sinne ist, da der body ja genau 800px breit ist und die Fotos dementsprechend auch 800px an Platz einnehmen. Das soll sich ja genau ausgehen.

Auf der live Seite http://www.alexbrunner.com ist diese Stelle in der css Datei, Zeilen 65, 66. Dort ist auch der gesamte verwendete Code zugänglich (html + css), ich wollte ihn nicht noch einmal hierher kopieren.

Ich bin um jeden Tipp froh, wie ich durch Verbesserung dieses Codes, oder durch einen völlig neuen Ansatz, dieses Layout stabil und exakt verwirklichen kann. CSS hat so seine Tücken, und ich hoffe, ich kann hier noch dazulernen! Vielen Dank für die Hilfe!
einbeiniger
neu hier
 
Beiträge: 4
Registriert: 01.10.2010, 08:56

Re: stabiles layout-grid mit fotos

Beitragvon sejuma » 04.10.2010, 07:12

Ich habe mir wegen Zeitmangel jetzt nicht den Code angesehen.
Setze aber mal für ul und li die Abstände generell auf 0:
Code: Alles auswählen
margin: 0;
padding: 0;


Dass es an der Rechtbündigkeit mangelt liegt m.E. daran, dass du die Spacer-Gifs entfernt hast. Die hatten ja auch eine bestimmte Breite eingenommen.
Bilde deshalb ersatzweise eine oder mehrere li-Klassen mit entsprechenden Borderangaben. Je nachdem wo dieser Border benötigt wird, weist du dem li diese entsprechende Klasse zu.
Bild
sejuma
Vielposter
 
Beiträge: 805
Registriert: 15.07.2009, 17:46

Re: stabiles layout-grid mit fotos

Beitragvon einbeiniger » 04.10.2010, 19:27

Ich habe durch weitere Formattierungen der Listen keine Lösung für dieses Problem gefunden. Deshalb bin ich umgestiegen, auf eine andere Idee, die hier:http://www.pmob.co.uk/temp/caption.htm vorgeschlagen wurde.

Das funktioniert für mich soweit wunderbar, im Firefox wird auch alles korrekt und stabil angezeigt, allerdings funktioniert der CSS hover-Effekt, den ich auf meiner Seite verwende, etwa in Chrome (und evtl. in weiteren Browsern?) nicht. Die Beschreibungen der Bilder werden nicht wie gewollt über den Fotos angezeigt, sondern sind - und das ist natürlich nicht erwünscht - außerhalb dieser.

Hat jemand eine Idee, was hier schief läuft? Ich dachte, es liegt an einem Konflikt in der css Datei, sodass zwei Attribute widersprüchlich definiert seien, aber ich kann keinen Fehler sehen. Bin froh um jede Hilfe!

Die Seite ist natürlich weiterhin unter http://www.alexbrunner.com zugänglich. Deshalb habe ich keinen Code hierher kopiert. LG, Danke!
einbeiniger
neu hier
 
Beiträge: 4
Registriert: 01.10.2010, 08:56

Re: stabiles layout-grid mit fotos

Beitragvon sejuma » 04.10.2010, 20:15

Das ist eine schlechte Lösung, weil invalide:
http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fwww.alexbrunner.com%2F
Innerhalb von Absätzen dürfen keine Blockelemente, also keine Div's vorkommen. So kann dies u.U. die Ursache für Fehlverhalten in anderen Browsern sein.
Du kannst aber mal versuchen, statt p einen div zu verwenden.

Leider fehlt mir momentan die Zeit, um mir über Alternativen Gedanken zu machen.
Bild
sejuma
Vielposter
 
Beiträge: 805
Registriert: 15.07.2009, 17:46

Re: stabiles layout-grid mit fotos

Beitragvon einbeiniger » 04.10.2010, 21:37

das war ein ziemlich guter tipp! die lösung war diesmal einfacher, als ich angenommen habe. leider sind meine programmier-skills soweit beschränkt, dass der code nicht immer einwandfrei ist - und so kommt es immer wieder zu anzeigefehlern. aber man lernt...

danke!
einbeiniger
neu hier
 
Beiträge: 4
Registriert: 01.10.2010, 08:56


Moderatoren: Laus, Moderatoren

Ähnliche Beiträge zu "stabiles layout-grid mit fotos"

Zurück zu: CSS für Anfänger

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste