Wie erstellen Sie eine zwei-Spalten-layout ohne html-Tabellen?
Habe ich gesagt, mehrmals, dass ich sollte nicht mit Tabellen für das layout-design, aber ich ständig mich selbst zu finden gehen wir zurück zu Ihnen, wenn ich kann nicht herausfinden, wie, etwas zu tun.
Brauche ich zum erstellen von einem layout mit zwei Spalten. Die linke Spalte ist 300px Breite und die Rechte Spalte nimmt den rest der Breite auf der Seite. Ich kann nicht herausfinden, wie man richtig tun Sie dies mit einfachem HTML und ich kann auch nicht ganz herausfinden, wie es zu tun mit einer Tabelle entweder.
Haben, um die Rechte Spalte zu nehmen den rest von der Breite scheint es, dass ich brauchen würde, um festlegen der linken Spalte die Breite, die mit einem Prozentsatz, so dass die Rechte Spalte die Breite kann 100% weniger der Anteil der linken Spalte. Aber ich brauche die linke Spalte 300px genau.
Das einzige, was ich denken kann, zu tun ist, berechnen die richtige Spaltenbreite zur Laufzeit mit JS. Irgendwelche Ideen, wie kann ich dies erreichen, ohne Tabellen und/oder ohne Javascript?
- Mein go-to in der Vergangenheit: matthewjamestaylor.com/blog/...
- Sollten Sie nicht mit Tabellen für das layout design
- vielen Dank für diese wertvolle information... darauf zu erklären, anstatt zu wiederholen, was ich haben offensichtlich bereits erzählt?
- Haben Sie versucht, die CSS float?
- Ich habe eine Antwort. Nichts für ungut, wollte nur bekräftigen, was Sie bereits kennen, richtig zu sein. 😉
- Ich weiß es zu schätzen, aber bis jemand erklärt meine warum darf ich nicht mit Hilfe von Tabellen-einige konkrete Gründe, dann glaube ich nicht, schon wissen, dass es korrekt zu sein. Ich weiß nur, dass das, was die Leute mir erzählen.
- Es ist viel einfacher zu erstellen fluid-layouts mit Tabellen. Die zwei Probleme bei der Verwendung von Tabellen ist die Tatsache, dass es nicht die semantische (Tabellen, die Daten enthalten sollten), und es fügt aufblasen, um den HTML-Code. Aber mit CSS 3 können Sie reguläre divs und machen Sie Verhalten sich wie Zellen einer Tabelle onenaught.com/posts/201/use-css-displaytable-for-layout Wenn Sie können nicht Sie verlassen sich auf CSS-3, die Sie gehen zu müssen, zu kämpfen Ihren Weg durch die Schwimmer und Margen und weniger aufblasen, dann die Tabellen, sondern es werden semantische HTML -, oder Sie können nur giveupandusetables.com
- Prozentsätze sind wirklich die beste Lösung, auch wenn es zunächst schwieriger, mit Ihnen zu arbeiten...sollten Sie sich über Prozentwerte und em ' s mehr, denn das ist die Zukunft, und Sie arbeiten beide als standard bereits.
- Ich habe Prozentsätze viel und es ist in der Regel in Ordnung, aber in meinem speziellen Fall, ich bin beauftragt, dass die linke Spalte 300 Pixel. Nicht mehr, nicht weniger.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bis wir flexbox-layout würde ich absolute Positionierung:
Html:
CSS:
jsfiddle
Gibt es alternativen, wenn Sie möchten, dass das layout an den Inhalt, anstatt die container. Wenn Ihr die Rechte Spalte hat mehr Inhalte, die Sie nutzen könnten:
jsfiddle
Wenn Ihr die linke Spalte hat mehr Inhalt, Verwendung:
jsfiddle
right: 0px
auf der rechten Spalte. Alle Eigenschaften, die ich fügte hinzu, in meinem Beispiel sind es für einen Grund. codepen.io/anon/pen/jAeuxflexbox
. Aber es ist nicht allgemein unterstützt noch.Spalten sind ziemlich straight-forward mit Schwimmern. Die Schwierigkeit liegt darin, dass die Eltern container deaktivieren Sie das schwebte Kinder.
HTML:
CSS:
Sollten Sie beachten, dass die kürzere der beiden Spalten nicht verlängern wird, um den Boden des Behälters. In der Regel den hintergrund der beiden Spalten wird vertikal wiederholt auf das element enthalten.
Wenn Sie brauchen, um pad die Spalten, die ich in der Regel hinzufügen
div.inner
Elemente innerhalb jeder.column
element, aber wenn Sie wollen, um zu vermeiden, "divitis", können Sie einfach hinzufügen:Fluid-Breite Spalten, alles, was Sie tun müssen ist, stellen Sie sicher, Ihre Breite zu 100% summieren:
overflow: auto;
auf die container zu groß, um es schwebte Kinder. Es ist ein bisschen weniger hacky. codepen.io/anon/pen/aizrB. Gute Lösung!<div>
Elemente grundlegend füllen Ihre container Breite, oder was von ihm übrig bleibt. Also, wenn Sie eine 300px Breite div, dann div daneben mit keine Breite angegeben, der 2. div zu füllen den rest des Behälters.Satz der linken Spalte 300px, setzen Sie in der rechten Spalte auf 100%... fertig. Um zu vermeiden, any cross-browser Seltsamkeit, Folgen Matt Ball der link zu... http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm . Er ist mit einem mysteriösen 2. wrapper, würde ich erachten unnötig, aber kleine Schritte 🙂
Sobald Sie in die Hülle, um die Spalte heights = Sie müssen min-height auf 100% glaube ich. Sie können die css-Eigenschaft overflow Probleme mit der text überläuft. Ziemlich straight-forward Zeug, ich erinnere mich, dass Sie eine Hölle von einer Zeit zu finden, wie zu tun, gleich Spalten, die Hülle ist der Schlüssel. Verwenden Sie außerdem keine JS für diese Leute, die JS sind entweder etwas mehr erweitert oder sind komplett neu in html/css.