eXma » Diskutieren » Computer und Technik
Startseite - Veranstaltungen - Mitglieder - Suche
Vollständige Version anzeigen: CSS-Frage: Floaten einmal anders?
mcnesium
mal wieder ne frage an unsere css-spezis:
ich habe eine bildergalerie semantisch korrekt mit folgendem code:

CODE
<dl>
<dt><img src="typo3temp/pics/e220a56d13.jpg"/></dt>
<dd>Beschreibung</dd>
<dt><img src="typo3temp/pics/e220a56d13.jpg"/></dt>
<dd>Beschreibung</dd>
<dt><img src="typo3temp/pics/e220a56d13.jpg"/></dt>
<dd>Beschreibung</dd>
<dt><img src="typo3temp/pics/e220a56d13.jpg"/></dt>
<dd>Beschreibung</dd>
</dl>


Im normalfall wird das im browser so dargestellt (blau bild, rot beschreibung):
bild kann nicht angezeigt werden

die bilder und ihre beschreibungen können nicht weiter verschachtelt werden, da das ganze sonst nicht valide ist. also können sie auch nicht direkt nebeneinander floaten. also hab ich erstmal jedem dt und dd width: 33%; und float: left; gegeben. ergebnis sieht folgendermaßen aus:
bild kann nicht angezeigt werden

nun hab ich dd noch margin-left: -33%; margin-top: 10em; gegeben und schon sitzt die beschreibung unter dem dazugehörigen bild:
bild kann nicht angezeigt werden

soweit sogut. jetzt kommt meine frage. denn was passiert, wenn nicht 3 sondern 4 oder mehr bilder da sind? dann siehts im safari 3.2, opera 9.2 und IE7 so aus:
bild kann nicht angezeigt werden
man beachte: die erste beschreibung ist eine zeile länger als die zweite und dritte. darum ist das vierte bild unter dem zweiten. ist nicht so schön, aber das viel größere problem ist im firefox 3 zu sehen:
bild kann nicht angezeigt werden
da werden die floatenden beschreibungen von den bildern der nächsten zeile überlagert. was kann ich denn dagegen tun?
Perseus
das ganze jetzt rein über CSS auseinanderzudividieren ist haarig.

eine nicht schöne, aber dennoch valide lösung wäre wohl, die einzelnen bilder+beschreibungen als einzelne listen anzusehen:

CODE

<dl>
<dd />
<dt />
</dl>


diesen einzelnen Listen kannst du jetzt ja mit float belegen, sodass sie komplett floaten, dann dürfte sich dein Problem erledigt haben.

Und um die einzelnen dl zu strukturieren kannst ja noch eine ul drum bauen:

CODE

<ul>
<li><dl /></li>
<li><dl /></li>
<ul>

und die list items floaten lassen.
sn3ek
Hier findest du auch noch paar richtig hilfreiche Tipps:

Cascading Style Sheets { Tutorials : CSS-Layouts basiert auf Floatierung }

Dort findest du auch speziell für IE7 CSS-Hacks: Cascading Style Sheets : Artikel : Internet Explorer 7
mmarx
Angeblich semantisch korrekt, aber img ohne alt?
mcnesium
ich hätte ncoh dazuschreiben müssen, dass diese bildergalerie von der typo3 extension tt_news erzeugt wird, und ich darum nicht ohne unsauberen code zu bauen irgendwas zwischen die einzelnen bilder packen kann. sonst hätt ich das nämlich längst so gemacht wie du sagst, perseus wink.gif

/edit: mmarx, krümelkacker! natürlich is da auch n alt tag drin, aber darum gehts hier nicht.

die frage ansich ist ja nur, wie ich dem firefox erklären kann dass er nicht über die texte drüber soll. ich überlege schon da irgendwas mit absoluter positionierung zu machen, aber mir fällt nichts vernünftiges ein.
Perseus
Zitat(mcnesium @ 19 Jan 2009, 17:28)
die frage ansich ist ja nur, wie ich dem firefox erklären kann dass er nicht über die texte drüber soll. ich überlege schon da irgendwas mit absoluter positionierung zu machen, aber mir fällt nichts vernünftiges ein.
*

CODE

dd { display:block; }

könnte einen Versuch wert sein...
mcnesium
hmm nee hab ich schon durch. macht keinen unterschied.