2009-03-30 7 views
0

Ich habe ein HTML-Editor-Widget, das in einem absolut positionierten DIV mit fester Größe erscheinen soll. Ich kenne jedoch die absolute Größe des DIV vorher nicht, und es kann sich ändern, wenn der Benutzer die Größe des Fensters ändert.Reine CSS-Kopfzeile mit minimaler Höhe, maximierter Körper in einem absolut positionierten DIV

Der Editor verfügt natürlich über Steuerelemente und einen bearbeitbaren Bereich. Jeder hat sein eigenes DIV. Ich möchte, dass die Steuerelemente so viel Platz wie nötig einnehmen, und der bearbeitbare Bereich den Rest des Platzes ausfüllen kann.

Wenn ich Tabellen verwende, ist dies extrem einfach zu erreichen. Ich schalte nur Ränder und Abstände und Ränder ab, und werfe jedes DIV in eine Zelle in seiner eigenen Reihe und fiddle vielleicht mit maximaler Höhe auf den Kontrollen DIV. Dies ist, wie es aussieht:

Base table http://img407.imageshack.us/img407/8435/table1.png

Same table with window resized another way http://img264.imageshack.us/img264/6438/table2p.png

Beachten Sie den bearbeitbaren Abschnitt so viel Platz wie möglich Aufnahme ohne Scrollbalken verursacht zu erscheinen.

Ich habe mit verschiedenen CSS-Beispielen gespielt und es scheint nichts zu funktionieren, ohne dass JavaScript bei der Größenänderung ausgeführt wird, damit der bearbeitbare DIV die Höhe des Elternelements minus der Höhe der Steuerelemente ist.

Natürlich kann ich die Eltern DIV Display haben: Tabelle und die Kinder DIVs in Display verpackt: Tabellen-DIVs und selbst haben Display: Tisch-Zelle, aber ... nun ja ... in diesem Fall ist es genauso wie mit TABLE, TR und TD, aber zehnmal hässlicher wegen der CSS-Reinheit. (Warum stören?)

Also, ohne direkt mit Display: Tabelle & Freunde, noch TABLE/TR/TD, noch JavaScript, gibt es eine reine CSS-Möglichkeit, dies zu tun? Mit anderen Worten, gibt es eine reine CSS-Art zu sagen, DIV1, nehmen Sie so wenig vertikalen Raum wie möglich, und DIV2, nehmen Sie den verbleibenden vertikalen Raum innerhalb der Elternelement?

Wenn nicht, bin ich bereit, die "reine CSS" -Mentalität zu beenden. Es hat mir genug Kummer bereitet mit sehr wenig Entwickler- oder Endnutzer-Nutzen.

+0

Die Bilder sind nicht mehr gültig, was die Frage unklar macht. –

+0

@ BrianTompsett- 汤 莱恩 leider habe ich sie nicht mehr. Ich habe damals den "Standard-SO-Weg" benutzt und ich nehme an, dass das nicht so lange anhält, wie ich angenommen habe. Aber die Beschreibung bleibt, ich finde es nicht unklar, ich denke das ist subjektiv, oder? – Kev

Antwort

1

Sie haben nur so viele Möglichkeiten. Wenn Sie tabellenartiges Verhalten ohne Verwendung einer Tabelle möchten, dann verwenden Sie display: table und geben Sie sich die Möglichkeit, Ihre Meinung später zu ändern. Auf diese Weise, während sie im Markup (subjektiver) hässlicher ist, macht es für mich mehr Sinn: Sie werden mit ein paar mehr Elementen enden, aber Sie werden nicht an ein bestimmtes Layout gebunden sein.

Wenn Ihnen das Markup nicht wichtig ist, ziehen Sie den Trigger und verwenden Sie eine Tabelle. Dies wird auf kurze Sicht einfacher sein.

Meine Frage: Wenn Sie JavaScript nicht verwenden möchten, wie werden Sie Ihre Editorsteuerelemente implementieren?

+0

Wie bin ich allerdings eingesperrt? Der HTML-Code ist genauso einfach zu ändern wie der CSS, nein? – Kev

+0

Über das JS versuche ich, Resize-Trigger (etc.) zu reduzieren, weil ich finde, dass es viel schnippiger ist, wenn das Layout der Layout-Engine überlassen wird, besonders jetzt, wo ich jQuery benutze. – Kev

+0

Ich dachte in Bezug auf eine dynamische (sagen wir, JSP) Datei, wo die JSP Teil eines Build ist. Es ist teurer zu bauen als eine CSS-Datei zu aktualisieren (das heißt, dass das CSS nicht Teil des Builds ist). Wenn es nur HTML ist Ich denke, es gibt nicht viel Unterschied. JavaScript: vereinbart. –

0

Soweit ich weiß, die Verwendung von Prozent für Breite/Höhe sollte gut funktionieren.

+0

Woher wissen Sie, wie viel Prozent eines unbekannten Werts ein fester Wert sein wird? Ich kann 100% für die bearbeitbare setzen, aber dann gibt es eine Bildlaufleiste, weil die Steuerelemente auch Platz nehmen. Aber weniger als 100% und es gibt keine Möglichkeit zu wissen, was% zu setzen ist. – Kev

+0

Ie., so weit ich es versucht habe, tut es nicht. – Kev

1

Diese Frage spricht für ein Problem Ich sehe eine Menge Leute in letzter Zeit konfrontiert: Gehorchen Sie der Regel "nur Tabellen für tabellarische Daten verwenden", oder verwenden Sie einfach Tabellen und machen 1/3 der Arbeit. Die Tatsache, dass dies sogar eine schwierige Entscheidung ist, ist ein Beweis dafür, wie verrückt wir alle geworden sind. Vergessen Sie die Standards, verwenden Sie Tabellen, machen Sie es sauber und einfach. Wenn W3C ein Problem damit hat, können sie sich beschweren, nachdem sie eine bessere Alternative erstellt haben.

0

Ich würde perfectDay die Antwort geben, aber ich würde Sie bitten, verrückt zu werden und zu versuchen zu beschreiben, wie es aussehen soll. Vielleicht mit Ascii-Art oder einem Link zu einer Grafik, so dass wir wissen, welches Layout wir Ihnen helfen sollen.

Ich würde auch hinzufügen, dass ich kürzlich (wieder) nicht geschlafen habe, also ... wenn ich eine offensichtliche super-klare Beschreibung von dem vermisse, was Sie möchten, dass wir Sie erreichen, haben Sie meine aufrichtigsten Entschuldigungen. :)

+0

"Ich möchte, dass die Steuerelemente so viel Platz einnehmen, wie sie benötigen, und den bearbeitbaren Bereich, um den Rest des Platzes zu füllen." Also ... die Steuerelemente haben meistens eine feste Höhe (außer sie werden umgebrochen) und der bearbeitbare Bereich ist variabel. Ich möchte, dass die Summe der beiden genau 100% des Eltern-DIV beträgt. Hilft das? – Kev

+0

Dort werden hoffentlich einige Bilder besser erklären. – Kev

Verwandte Themen