left, main und right sollen sich autmatisch der höhe anpassen
Hallo Leute,
ich hab hier ein kleines Problem, auch Wiki konnte mir hier nicht helfen.
Ich hab ein Layout mit #left, #main und #right.
Jetzt ist es so, dass ich gerne folgendes hätte. Alle 3 Bereiche sollen sich der höhe automatisch anpassen. Wenn jetzt im main viel drinn steht, soll left und right sich automatisch anpassen, da ich bei denen eine Hintergrundfarbe gewählt habe.
Kann man das irgendwie lösen?
lg, Andi
Gleiche Spaltenhöhen von #left, #main, #right
Zitat:
Zitat von
m-werk
Danke für den Tipp, aber das mit der Hintergrundgrafik wollte ich verhindern. Sonst hätte ich es eh so gemacht.
Ich hab aber hier jetzt doch noch was gefunden und das hat jetzt funktioniert:
Code:
<script>
// equal height colums
var h = document.getElementById('container').offsetHeight;
document.getElementById('left').style.height = h + 'px';
document.getElementById('main').style.height = h +'px';
document.getElementById('right').style.height = h + 'px';
</script>
LG, Andi
Hallo Andi,
wo/wie hast du das Skript eingebunden? Ich nutze Contao 3.0.6 mit dem neuen CSS-Framework. --> #Main kommt vor #Left und #Right
Die ganzen Tricks mit "faux columns" etc. nützen mir Nichts, weil ich kein optisches Problem habe, sondern tatsächlich das Problem, dass sich die Spaltenhöhe immer nach dem #Main content richtet. Wenn dann die Navi im #Left mal länger wird, skaliert sich der Mittelteil nicht mit und die Navigation läuft über den #Footer hinaus. Mit #Left habe ich nur Einfluss auf die Spaltenhöhe, wenn ich einen absolute Höhe eingebe.
Hast du einen Tipp?
Viele Grüße!
Isa
Script für Spaltenanpassung Höhe #left, #main, #right
Zitat:
Zitat von
m-werk
Hallo Isa,
ich hatte diesen Code im Seitenlayout unter "Eigener JavaScript-Code" eingebaut.
Hallo Andi,
so ganz funktioniert es bei mir noch nicht. Ich fürchte ich benötige noch ein wenig Erklärung. Also die Variable h sagt, dass sie höhe des Containers als Maßstab nehmen soll. Anschließend sollen die Bereiche #left, #main,#right die höhe des containers füllen + px. Was verbirgt sich hinter px? Welche Angabe wird da addiert?
Vielen Dank schonmal und viele Grüße!
Isabelle
Gleiche Spaltenhöhe Script
Hallo Wulf,
danke erstmal. Was ist, wenn ich dem #container keine festen Pixel zugewiesen habe? Werden sie dynamisch berechnet?
Script zur automatischen Höhenanpassung schließt verborgene Elemente mit ein
Hallo,
ich habe nun viel experimentiert und festgestellt, dass beim Einbinden des o.g. Scripts zwar alle Spalten auf gleiche Höhe erweitert werden, nämlich die die der Container laut Inhalt hat, aber leider werden hier auch verborgene Elemente und geschlossene Akkordeons mit berücksichtigt, als sei der Text tatsächlich auf der Seite.
Fällt dazu jemandem noch etwas ein?
Viele Grüße! Isa
Neues Script Spaltenhöhe aller Layoutbereiche gleich
Hallo Wulf und Andreas,
könnt ihr mir noch sagen, wo/wie ich das Script einbinde?
Viele Grüße!
Isa
Script in Experteneinstelllungen
Zitat:
Zitat von
Mokkujin
Hallo isa,
ich würds da einbinden ...
Themes > Seitenname > Seitenlayout > Experteinstellungen
Hallo Mokkujin,
hat leider nicht geklappt. müsste das nicht vllt. ins fe_page Template?
Zu früh gefreut. Script verschluckt Akkordeons
Hallo nochmal,
das Basisproblem mit den dynamischen Spaltenhöhen für die Layoutbereiche ist nun gelöst. Allerdings berücksichtigt das Script nicht die eingebauten Akkordeons. Wenn man es öffnet verschwindet es unter dem footer. Kann man das Script entsprechend noch anpassen?
Viele Grüße!
Isa
jQuery Script für Spaltenhöhe
ich habe das jQuery-Script genommen und es nach Anleitung in den Templates eingebunden. Ohne Layout-Builder komme ich leider nicht nicht aus. Ich hatte auch schonmal ein Javascript ins Seitenlayout eingebunden, aber dort passierte genau das, was du beschrieben hast. Die Gesamthöhe bei geöffneten Akkordeons wurde dargestellt.
habe auch probleme mit 3 gleich langen spalten
liebe contao-fans,
habe eure diskussion hier mit spannung gelesen und etliches ausprobiert; bisher leider ohne das "perfekte" ergebnis. benutze derzeit contao 3.2.9 mit jQuery, aber ohne mootools-bibliothek. nutze ebenfalls #left, #main und #right als 3-spaltiges system.
habe bisher mit folgendem skript relativ gute ergebnisse erzielt, welches ich im fenster "eigener javascript-code" des layouts ganz unten eingebaut hatte:
Zitat:
<script>
// equal height colums
var h = document.getElementById('container').offsetHeight;
document.getElementById('left').style.height = h + 'px';
document.getElementById('main').style.height = h +'px';
document.getElementById('right').style.height = h + 'px';
</script>
ergebnis: spalten waren immer gleich lang, auch wenn die mittlere (#main) vom inhalt her die kürzeste war. das hat also gepasst. wenn aber die mittlere spalte die längste war, dann musste ich die betreffende seite immer erst noch ein zweites mal laden (aktualisieren), bevor #left und #right genauso lang angezeigt wurden, wie #main. diese korrekturmöglichkeit wiederum funktioniert nur beim firefox und beim internet-explorer. google-chrome und opera (alle in der neuesten version) korrigieren hier nach der seiten-aktualisierung nicht!
hier meine startseite als ein beispiel dafür: http://www.die-schreibmaus.de/index.php/startseite.html
danach habe ich das skript von andreas und wulf ausprobiert und in das feld mit dem zusätzlichen javascript-code im layout eingebaut:
Zitat:
<script>
(function($) {
$(document).ready(function(){
var newHeight = Math.max($('#main').outerHeight(), $('#left').outerHeight(), $('#right').outerHeight());
$('#main, #left, #right').height(newHeight);
// oder als Einzeiler $('#main, #left, #right').height(Math.max($('#main, #left, #right').outerHeight()));
});
})(jQuery);
</script>
ergebnis: es lief genauso gut wie das erste skript, ich musste aber wieder die seiten aktualisieren, wenn #main den längsten inhalt hatte . das klappte auch wieder nur beim FF und IE.
dann habe ich das skript von andreas ausprobiert und wie angeleitet duch die head-tags in den experteneinstellungen aufgerufen:
Zitat:
// columns.js
(function($) {
window.addEvent('domready', function()
{
$$($('main'), $('left'), $('right')).setStyle('min-height', $('container').getSize().y.toInt());
});
})(document.id);
ergebnis: jede spalte behielt ihre individuelle länge, also gar keine angleichung mehr. kann eventuell daran gelegen haben, dass ich kein mootools nutze (wegen einer anderen erweiterung) und das skript aber für mootools gedacht war. dann habe ich noch das skript für jQuery von andreas ausprobiert und auch als columns.js-datei im files-ordner abgelegt:
Zitat:
(function($) {
$(document).ready(function(){
$('#main, #left, #right').css('min-height', $('#container').innerHeight());
});
})(jQuery);
habe dieses kurze skript wieder zwischen die "script"-tags des vorletzten skripts gesetzt und gespeichert. war das richtig so, oder muss es ohne script-tags und irgendwie gesondert in die jQuery-bibliothek eingebunden werden??? wenn ja, wie oder wo mache ich das?
ergebnis war übrigens wie beim letzten skript auch gleich null, also 3 unterschiedlich lange spalten...
wäre super nett, wenn ihr mir hier noch mal helfen könntet...
liebe grüße, grashalm
habe jetzt schon deutliche verbesserung erzielt!
hallo isa, hallo andreas,
ganz lieben dank für eure unterstützung! hat schon jetzt ganz viel gebracht! habe als erstes die SCRIPT-tags aus der javascript-datei herausgenommen, neu gespeichert und diese datei wieder über den HEAD-bereich in den experteneinstellungen des layouts eingebunden. das war für mich mit abstand am einfachsten, weil ich mich mit script- und programmiersprachen überhaupt nicht auskenne. ergebnis: der #main-bereich wird jetzt immer komplett angezeigt und verschwindet nicht mehr "unter" dem footer. #left und #right sind jetzt zwar immer gleich lang, aber leider immer noch ein ganzes stück kürzer als der #main-bereich, wenn dieser der längste ist.
das ist zumindest bei zwei seiten so, einmal auf der startseite: http://www.die-schreibmaus.de/index.php/startseite.html, und zum beispiel auch hier: http://www.die-schreibmaus.de/index....14-feb-20.html.
wenn #main inhaltlich kürzer ist, als die außenspalten, werden alle spalten gleich lang angezigt! das ist super. weiterer erfolg: der browser google chrome agiert jetzt wie mein firefox (#main ist nach unten hin komplett, #left und #right sind gleichlang, aber kürzer als #main), und internet-explorer und opera zeigen jetzt die seiten sogar perfekt an (alle drei spalten gleich lang und #main ist auch immer komplett). und zweimal laden muss ich auch nichts mehr. von daher schon eine erhebliche steigerung!
andreas, du schreibst:
Zitat:
Um sicher zu stellen, dass der DOM aufgebaut ist bevor dein Script startet, kannst du es nach dem Window ready Event starten.
ich nehme an, das ist relevant, weil bis jetzt die außenspalten noch kürzer sind, wenn #main den längsten inhalt hat. was ist ein DOM und wie und wo kann ich es nach dem "window ready event" starten? muss ich da eine zeile aus den mootools-templates kopieren und muss sie anpassen? muss die dann in die javascript-datei? das werde ich kaum alleine schaffen, dafür habe ich zu wenig kenntnisse von skripten und templates...
ich weiß nicht, ob du die zeit hast, mich dabei noch etwas zu unterstützen? oder hat die tatsache, dass auf den o.g. seiten die außenspalten im FF und google chrome kürzer sind, eine andere ursache?
was die positionierung der elemente im head-bereich angeht, so werde ich mal versuchen, diese mit position:absolute; zu definieren. habe da neulich schon ewig dran rumgebastelt, bis es jetzt auf diese weise "geklappt" hat. irgendwie verschob sich der schriftzug oben immer mit dem rechten mauslogo zusammen. war äußerst schwierig. das muss ich mal in ruhe machen, wenn nichts anderes anliegt. danke für den hinweis!
das die seite zu breit ist, weiß ich. da muss ich noch drangehen. stand ohnehin schon auf meiner agenda. und das style-element im body schaue ich mir auch noch mal an. vielen dank jedenfalls für deine aufmerksamkeit! herzlichen dank auch an dich, isa!
freue mich sehr, wenn ihr mir mit den spalten noch mal auf die sprünge helfen mögt...
liebe grüße, grashalm
spaltenproblem scheint gelöst!
hallo, hier noch mal grashalm,
mein spaltenproblem hat sich anscheinend gelöst! nach der wertvollen vorarbeit von andreas und isa hat mir dein tipp, spooky, zum entscheidenden durchbruch verholfen. nachdem ich nun die besagte zeile geändert habe, läuft das script bisher auf allen browsern von anfang an einwandfrei! habe bisher noch keine seite gefunden, die nicht auf anhieb korrekt angezeigt wird!
noch mal dickes lob @ isa, andreas, spooky und tab! :)