![]() |
CSS: Höhe definieren
Hallo,
ich habe ein CSS Problem. Ich benutze das YAML Framework und habe ein div Element ym-column. Dieses hat 3 Kinder (Spalten) ym_col1 bis ym-col3. Ich möchte erreichen, dass alle 3 Spalten immer die gleiche Höhe haben. Deshalb habe ich height auf inherit gesetzt. Die Mutter ym-column nimmt korrekterweise immer die Höhe der größten Spalte an, da ihre Höhe auf auto steht. Schaue ich mir die "errechnete" Höhe von ym-column an und setze diese Höhe manuell z.B auf 600px; folgen alle Spalten mit der Höhe. Ich habe den Eindruck, dass inherit hier nicht den tatsächlichen Wert der Mutter-Höhe vererbt, sondern den "Wert der Eigenschaft" also "auto". Damit werden die Spalten aber nur so groß wie ihre Inhalte. Wie bekomme ich es hin, dass die Höhe der Kinder den Wert der Höhe der Mutter übernehmen. :gruebel: |
AW: CSS: Höhe definieren
|
AW: CSS: Höhe definieren
Vermutlich nicht. Das hintereinanderschieben der floatenden Div's dürfte mit YAML als layout container nahezu nicht machbar sein.
|
AW: CSS: Höhe definieren
Das ist ein interessanter Beitrag, aber es ist wie Phoenix gesagt hat, nicht so einfach über das YAML Framework zu erledigen.
Hätte ehrlich gesagt gedacht, dass es in HTML / CSS einfacher wäre, drei gleich hohe Spalten zu erzeugen. |
AW: CSS: Höhe definieren
Hast du display: table und co. schon mal angeguckt? Vielleicht bekomst du es damit hingebastelt.
Edit: Alternativ dazu ... mal in die ![]() Das wird vermutlich das sein, was am nächsten herankommt ... allerdings für ein Grid :| |
AW: CSS: Höhe definieren
Ich hab mit dem YAML-Framework noch nicht gearbeitet. Hab grad mal über deren Webseite gestöbert. Sieht interessant aus. :thumb: Nutze bisher immer nur Bootstrap. Kenne das Problem aber auch aus meinen eigenen Web-Projekten. Daher sorry, wenn ich mit den Tipps vielleicht am Sinn vorbeischiesse. :mrgreen:
Hilft dir das? ![]() Ansonsten: Hast du eine Möglichkeit, jQuery zu nutzen? Da könntest du sowas wie das machen:
Code:
// HTML
<div class="ym-column"> <div class="ym-col1 equalheight">...</div> <div class="ym-col2 equalheight">...</div> <div class="ym-col3 equalheight">...</div> </div> // jQuery $(function() { equalHeight = function(container){ var currentTallest = 0, rowDivs = new Array(), $el, marginBottom = 0; $(container).each(function() { $el = $(this); $($el).height('auto'); var currentHeight = $el.height(); if (currentHeight > currentTallest) currentTallest = currentHeight; rowDivs.push($el); }); for(currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) { rowDivs[currentDiv].height(currentTallest + marginBottom); } }; function setHeights() { equalHeight('div.ym-column > div.equalheight'); } $(window).load(function() { setHeights(); }); $(window).resize(function(){ setHeights(); }); }); |
AW: CSS: Höhe definieren
Zitat:
Damals habe ich zum ersten Mal mitbekommen, dass man hier verschiedene Konzepte verfolgen kann, die dann eben in den Grundlayouts teilweise umgesetzt waren. Ich hab davon nicht viel Plan, aber den Verdacht, dass Du da vielleicht etwas umsetzen willst, was nicht in das verwendete Basis-Layoutkonzept gehört bzw gegenläufig ist. Hier ein Link: ![]() Abschnitt "Equal Height Column Rulers" klingt vielleicht interessant. |
AW: CSS: Höhe definieren
Die Sache ist noch etwas komplizierter. :shock:
Ich nutze typo3, um ein CMS aufzusetzen. Dabei benutze ich ein CSS Gerüst, welches ich über thinkintags.com definiert habe, welches wiederum auf das YAML Framework setzt. :stupid: In thinkintags habe ich nicht mit YAML Grids gearbeitet, sondern mit ym-wbox und ym-columns, so dass die Equal Height Grids jetzt nur schwer umsetzbar sind. Der Ansatz von nuclearping mit JQuery könnte aber klappen. Und über jQuery arbeitet auch SyncHeight aus dem YAML Framework. das werde ich mir jetzt beides nochmal anschauen. |
AW: CSS: Höhe definieren
Danke hat super geklappt mit jquery. Habe j3query über den extentionmanager installiert. Dann nur jcore als zu ladende lib angeklickt. Dann über
Code:
den JS Code geladen und in diese Datei noch den Code:
includeJS.file1 = fileadmin/yaml/add-ons/syncheight/jquery.syncheight.js
Code:
eingefügt, damit alle 3 Spaltenhöhen synchronisiert werden.
$(document).ready(function(){
$('.ym-col1, .ym-col2, .ym-col3').syncHeight({ updateOnResize: true }); }); Klappt wie die wilde Wutz. :thumb: |
AW: CSS: Höhe definieren
Und damit ist das Layout für alle, die JS deaktiviert haben, kaputt.
Keine schöne Lösung! :( |
AW: CSS: Höhe definieren
Zitat:
Zitat:
Die Alternativen bei diesem Problem sind auch nicht gerade schön :wink: |
AW: CSS: Höhe definieren
Zitat:
Das ist meiner Erfahrung nach bisher auch die einzige Lösung, die zuverlässig und auch Crossbrowser funktioniert. Schade, dass wir mit HTML5 oft immernoch solche "von hinten durch die Brust ins Auge"-Lösungen basteln müssen. Zitat:
|
AW: CSS: Höhe definieren
Ich finde es akzeptabel, dass das Layout leicht verändert ist, wenn jemand JS ausschaltet.
Eine Unschönheit habe ich ncoh. Ich nutze in meinem CMS das News Plug-In und das Gästebuch. Bei beiden wird offensichtlich ein Teil der Seite erst mit Verzögerung dargestellt, weil noch auf die Datenbank zugegriffen werden muss, um die News, bzw. die Beiträge im Gästebuh zu laden. Die Höhe der mittleren Spalte wird dabei offensichtlich zunächst korrekt ermittelt. Die Beiträge im Gästebuch erscheinen dann aber erst unterhalb der ermittelten mittleren Spalte. Ich nutze ja document.ready als Auslöser zur Angleichung der Spalte. Gibt es noch ein Event, welches später ausgelöst wird, also wenn alle Inhalte der Seite dargestellt sind? Als "Notlösung" habe ich auf diesen beiden Seiten den Code deaktiviert. |
AW: CSS: Höhe definieren
|
AW: CSS: Höhe definieren
Ja, wie Jumpy schon angemerkt hat:
Code:
wird nach
window.onload
Code:
ausgeführt.
document.ready
|
AW: CSS: Höhe definieren
Zitat:
Zitat:
Wollte nur mal auf das Problem aufmerksam machen, falls noch mehr Leute planen das so zu machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz