13 Stimmen

CSS max-width mit Prozent

Max-width mit einer Prozentangabe scheint weder im IE 8 noch in Firefox 3 zu funktionieren. Bestimmte Pixelbreiten funktionieren problemlos. Übersehe ich etwas?

Ich habe ein Eingabeformular und möchte rechts daneben einen erklärenden Text anzeigen. Aber ich will nicht, dass der erklärende Text das Formular zerdrückt.

Ich habe max-width noch nie verwendet, aber es schien eine ausgezeichnete Lösung zu sein. Ich habe diesen einfachen CSS-Stil geschrieben:

div.hint {max-width: 50%; float: right;}

Dann schrieb ich:

<div class=hint>... hint text</div>
<form action=xxx method=post>
... etc ...

Der div.hint quetscht das Formular stark nach links.

Ich habe dies mit etwas Text anstelle des Formulars versucht. Die div.hint nimmt etwa 95% des Bildschirms, gibt nur einen kleinen Rand auf der linken Seite, und dann der andere Text wird vollständig unter ihm geschoben.

Wenn ich die maximale Breite von einem Prozentsatz auf eine feste Anzahl von Pixeln ändere, scheint es zu funktionieren. Aber ich möchte es nicht auf Pixel basieren, weil ich die Abmessungen des Browsers des Benutzers nicht kenne.

Funktioniert Prozent nicht mit max-width trotz, was ich in der Dokumentation lesen, oder bin ich etwas übersehen?


Als Antwort auf den Kommentar von Seanmonster: Hier gebe ich eine triviale, aber vollständige Webseite an, die veranschaulicht, was meiner Meinung nach funktionieren sollte, aber nicht funktioniert:

<html><title>Max width test</title>
<style>
.form {max-width: 75%; float: left;}
.hint {max-width: 50%; float: right;}
</style>

<div class=hint>
<p>Fourscore and seven years ago our forefathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that
all men are created equal. We are now engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated,
can long endure. We are met on a great battlefield of that war. We have come to dedicate a portion of that field as a final resting place
for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this. Etc.
</div>
<div class=form>
<table>
<tr><th>Label 1 <td>Value 1
<tr><th>Label 2 <td>Value 2
<tr><th>Label 3 <td>Value 3
</table>
</div>
</html>

Wenn ich diese Seite in einem Browser öffne, erhalte ich nicht zwei Spalten, sondern das Div "hint", das 100% der Breite einnimmt, und darunter das Div "form", das 100% der Breite einnimmt. Wenn ich beide max-width's auf "width: 50%" ändere, erhalte ich zwei Spalten, wie ich es erwarten würde. Offensichtlich habe ich etwas verpasst, wie max-width funktionieren soll, aber ... ich verstehe es nicht.

5voto

seanmonstar Punkte 11086

Max-width funktioniert in FF3 und IE8 problemlos mit Prozentwerten. Die Prozentsätze beziehen sich jedoch auf die übergeordnete Breite. Nicht Kinder um sie herum.

3voto

diadem Punkte 804

Max-width im IE8 ist in mehreren Szenarien fehlerhaft. Es ist ein bekanntes Problem.

Einen Artikel dazu finden Sie hier. http://edskes.net/ie8overflowandexpandingboxbugs.htm

Sie benötigen drei Dinge, um diesen Fehler auszulösen - maxwidth, scrollbars und float

1voto

CMN Punkte 259

Wenn Sie die div.hint und form beide nach links verschieben und beide mit einer maximalen Breite von 50% versehen, sollten sie sich nicht gegenseitig zerquetschen.

<div>
  <div class="form" style="float:left; max-width:50%">
    <form></form>
  </div>
  <div class="hint" style="float:left; max-width:50%">
  </div>
</div>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X