vertical-align in Blockelementen (Firefox)
AZ
- css
Hallo Forum,
ich bin auf folgendes Problem mit meinem Firefox 2.0.0.6 gestoßen und wollte fragen, ob es dazu eine CSS-basierte Lösung gibt.
Das Problem:
Die Internetseite erzeugt die Struktur
<div class="box-body">
<p>
<img ... >
<br>
... text ...
</p>
</div>
. Dabei bekommt der div-Tag eine min-height Angabe für ein einheitliches Aussehen. Um nun den p-Tag vertikal unten anzuordnen, wollte ich diesem einfach ein style="vertical-align:text-bottom;" verpassen.
Geht jedoch leider nicht.
Daher habe ich folgende Testdatei erzeugt (das hallo soll unten stehen.)
<html>
<body>
<p style="background-color: red; min-height: 200px;">
<div style="background-color: yellow; vertical-align:text-bottom;">
hallo
</div>
</p>
</body>
</html>
==> klappt wunderbar.
<html>
<body>
<div style="background-color: red; min-height: 200px;">
<p style="background-color: yellow; vertical-align:text-bottom;">
hallo
</p>
</div>
</body>
</html>
==> geht nicht.
Mit der webdeveloper-Erweiterung zeigt Firefox an, dass es den "p"-Tag nicht als Blockelement auffasst.
Hat noch jemand eine Idee, wie ich ein p - Tag in einem div vertikal ausrichten kann, wenn mir die genaue Höhe des p-Tags nicht (vorher) bekannt ist?
Hi AZ,
Hat noch jemand eine Idee, wie ich ein p - Tag in einem div vertikal ausrichten kann, wenn mir die genaue Höhe des p-Tags nicht (vorher) bekannt ist?
Also meine Idee wäre das ganze mit position:absolute
zu lösen, vielleicht nicht der
sauberste weg aber besser als garnichts. ;-)
<!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" xml:lang="de" lang="de">
<head>
<title>..::INTCASE::..</title>
<meta name="author" content="Engin Yildiz" />
~~~~~~css
<style type="text/css">
#rotebox
{
background: #f00;
min-height: 200px
;position:relative;
}
#rotebox p
{
width:100%;
margin:0;
padding:0;
background: #ff0;
position:absolute;
bottom:0;
left:0;
}
</style>
<!--[if IE]>
<style type="text/css">
#rotebox
{
height:200px;
}
</style>
<![endif]-->
<!--[if IE 7]>
<style type="text/css">
#rotebox
{
min-height:200px;
}
</style>
<![endif]-->
~~~~~~html
<html>
<body>
<div id="rotebox">
<p>
hallo
</p>
</div>
</body>
</html>
Im Firefox 2 und IE 6 sieht es denke ich mal wie gewünscht aus,
Live Demo.
Grüße,
Engin
GYRO
Hi,
<html>
<body>
<p style="background-color: red; min-height: 200px;">
<div style="background-color: yellow; vertical-align:text-bottom;">
Daß das div nicht innerhalb des p liegt, ist Dir bewußt?
Das schließende Tag von p ist optional; da p kein div enthalten kann, wird es also implizit geschlossen, bevor das div beginnt.
vertical-align wirkt sich nur bei inline- und bei table-cell-Elementen aus.
Dein div ist keins von beiden.
</p>
Du schließt hier ein p, das nirgends geöffnet wurde.
<div style="background-color: red; min-height: 200px;">
<p style="background-color: yellow; vertical-align:text-bottom;">
vertical-align wirkt sich nur bei inline- und bei table-cell-Elementen aus.
Dein p ist keins von beiden.
Im ersten Versuch scheint es zu klappen, weil das p _vor_ dem div eine Mindesthöhe hat - das div wird aber nicht innerhalb des p an dessen Unterkante ausgerichtet.
Mit der webdeveloper-Erweiterung zeigt Firefox an, dass es den "p"-Tag nicht als Blockelement auffasst.
Wie genau ermittelst Du das?
Hat noch jemand eine Idee, wie ich ein p - Tag in einem div vertikal ausrichten kann, wenn mir die genaue Höhe des p-Tags nicht (vorher) bekannt ist?
Über Positionierung oder über table-cell.
cu,
Andreas