Text um Bild floaten lassen - wie danach clearen?
jobo
- css
0 suit0 Gunnar Bittersmann0 Gunnar Bittersmann0 jobo0 Matthias Apsel0 molily0 jobo
0 MudGuard0 ChrisB
Hallo,
<h2>Bereich</h2>
<h3>Name1</h3>
<p>
<img src="name1.jpg">
Text und nochmehr Text ...
</p>
<h3>Name2</h3>
<p>
<img src="name2.jpg">
Text und nochmehr Text ...
</p>
<!-- etc pp -->
Wenn ich dem Bild ein float:left geben (was ich eh nicht verstehe, denn es ist ja ein inline-Element), dann müsste ich den h3 ein clear:left geben. Aber dann haut er mir auch beim ersten h3 einen großen Absatz davor, obwohl es da oder grade weil es da nix zu clearen gab, vermute ich.
Wie mach ich das denn richtig? Das Prinzip konnte ich hoffentlich klar machen, die Aufgabenstellung ja eigentlich auch recht simpel. Habe jetzt ein hässliches <div style="clear:left"></div>
dazwischen gepackt. Missbrauch hoch 10 und noch inline-style...; bäh.
Dank und Gruß
jobo
Wie mach ich das denn richtig? Das Prinzip konnte ich hoffentlich klar machen, die Aufgabenstellung ja eigentlich auch recht simpel. Habe jetzt ein hässliches
<div style="clear:left"></div>
dazwischen gepackt. Missbrauch hoch 10 und noch inline-style...; bäh.
img+h3, img+table { clear:left; }
das sorgt dafür, dass der Textfluss nach floatenden Bildern bei Tabellen oder h3-Überschriften wiederhergestellt wird. Es spricht aber - wenn es das layout erfordert - nichts dagegen, einfach beinhalt bei h3 zu clearen.
Hallo,
Wie mach ich das denn richtig? Das Prinzip konnte ich hoffentlich klar machen, die Aufgabenstellung ja eigentlich auch recht simpel. Habe jetzt ein hässliches
<div style="clear:left"></div>
dazwischen gepackt. Missbrauch hoch 10 und noch inline-style...; bäh.
img+h3, img+table { clear:left; }
>
> das sorgt dafür, dass der Textfluss nach floatenden Bildern bei Tabellen oder h3-Überschriften wiederhergestellt wird. Es spricht aber - wenn es das layout erfordert - nichts dagegen, einfach beinhalt bei h3 zu clearen.
Dann haut er mir zwischen h2 und h3 (also das erste, wo noch kein float voran ging) einen riesen Absatz. Frag mich nicht warum ... ???
Gruß
jobo
Hallo,
Hallo,
Wie mach ich das denn richtig? Das Prinzip konnte ich hoffentlich klar machen, die Aufgabenstellung ja eigentlich auch recht simpel. Habe jetzt ein hässliches
<div style="clear:left"></div>
dazwischen gepackt. Missbrauch hoch 10 und noch inline-style...; bäh.
img+h3, img+table { clear:left; }
> >
> > das sorgt dafür, dass der Textfluss nach floatenden Bildern bei Tabellen oder h3-Überschriften wiederhergestellt wird. Es spricht aber - wenn es das layout erfordert - nichts dagegen, einfach beinhalt bei h3 zu clearen.
>
> Dann haut er mir zwischen h2 und h3 (also das erste, wo noch kein float voran ging) einen riesen Absatz. Frag mich nicht warum ... ???
Ich kann es aber nicht reproduzieren:
~~~html
<html>
<body>
<h2>abc</h2>
<h3 style="clear:left">clear</h3>
<h2>abc2</h2>
<h3>noclear</h3>
</body>
</html>
Wird normal angezeigt ...;
Gruß
jobo
@@jobo:
nuqneH
Wenn ich dem Bild ein float:left geben (was ich eh nicht verstehe, denn es ist ja ein inline-Element)
Eben, es steht in der (einen!) Zeile.
dann müsste ich den h3 ein clear:left geben.
Nicht unbedingt. Es sollte genügen, den p ein overflow: hidden zu geben.
Qapla'
@@Gunnar Bittersmann:
nuqneH
Nicht unbedingt. Es sollte genügen, den p ein overflow: hidden zu geben.
Argl, erst denken! Dann steht (wenn der Absatz weniger Höhe einnimmt als das Bild) der nachfolgende Absatz nicht mehr neben, sondern unterm Bild.
Qapla'
Hallo,
@@Gunnar Bittersmann:
nuqneH
Nicht unbedingt. Es sollte genügen, den p ein overflow: hidden zu geben.
Argl, erst denken! Dann steht (wenn der Absatz weniger Höhe einnimmt als das Bild) der nachfolgende Absatz nicht mehr neben, sondern unterm Bild.
Naja, das wäre ja o.k.. Wobei der Nachfolger ja ein <h3> ist. Aber wieso klappt das denn mit dem overflow:hidden. Ich dachte, dass ist dazu da, den overflow zu hiden, also den Überfluss zu verstecken ;-)
Qapla'
Gruß
jobo
Om nah hoo pez nyeetz, jobo!
Aber wieso klappt das denn mit dem overflow:hidden. Ich dachte, dass ist dazu da, den overflow zu hiden, also den Überfluss zu verstecken ;-)
http://forum.de.selfhtml.org/archiv/2010/12/t202270/#m1365894 f.
Matthias
Aber wieso klappt das denn mit dem overflow:hidden. Ich dachte, dass ist dazu da, den overflow zu hiden, also den Überfluss zu verstecken ;-)
overflow: hidden erzeugt einen Block Formatting Context
http://aktuell.de.selfhtml.org/weblog/css-spaltenlayout#wunderwaffe-overflow
overflow:hidden ist schon lange nicht mehr das Mittel der Wahl zum Einschließen von Floats. Der gute alte Clearfix in einer aktuellen Variante bringt am wenigsten Probleme und Nebenwirkungen mit sich.
Mathias
Hallo,
overflow:hidden ist schon lange nicht mehr das Mittel der Wahl zum Einschließen von Floats. Der gute alte Clearfix in einer aktuellen Variante bringt am wenigsten Probleme und Nebenwirkungen mit sich.
also
/* For modern browsers */
.cf:before,
.cf:after {
content:"";
display:table;
}
.cf:after {
clear:both;
}
/* For IE 6/7 (trigger hasLayout) */
.cf {
zoom:1;
}
und
<p class="cf">
<img src="bla.jpg" style="float:left">viel Text</p>
<h3>neu</h3>
<!-- inline style fürs img jetzt nur zur verdeutlichung-->
und alles ist gut.
Merci.
Gruß
jobo
Hi,
Wenn ich dem Bild ein float:left geben (was ich eh nicht verstehe, denn es ist ja ein inline-Element),
aus HTML-Sicht ist img immer ein inline-Element. Egal wie es dargestellt wird.
Aus CSS-Sicht ist img mit float ungleich none ein block-Element.
Siehe Zusammenhang zwischen display, float, position
cu,
Andreas
Hi,
Wenn ich dem Bild ein float:left geben (was ich eh nicht verstehe, denn es ist ja ein inline-Element), dann müsste ich den h3 ein clear:left geben. Aber dann haut er mir auch beim ersten h3 einen großen Absatz davor, obwohl es da oder grade weil es da nix zu clearen gab, vermute ich.
Ich vermute eher, dass das daran liegt, dass du damit eine Voraussetzung für die Aufhebung von adjoining margins schaffst.
MfG ChrisB