Ich weiß nicht warum. Es funktioniert offline, aber wenn ich die Seite auf den Server lade, wird die Höhe kleiner als der Inhalt. Und manchmal ändert sich die Höhe beim Neuladen des Browsers in Safari oder Firefox.
Interessanterweise hatte ich das gleiche Problem. Es funktionierte großartig auf der Festplatte, aber als ich die Dateien auf den Server hochlud, funktionierte das Skript aus irgendeinem Grund nicht auf die gleiche Weise. Es setzte tatsächlich die Höhe jedes Divs auf die Höhe des ersten.
…eigentlich habe ich eine kleine Frage. Wie implementiert man das auf mehreren Divs?
zum Beispiel habe ich 3 Sätze von 2 Divs auf einer Seite. Ich möchte nur, dass die Sätze angeglichen werden, nicht alle Divs auf der Seite. Ich mache mir nichts daraus, mehrere Klassen zu verwenden, aber was ist der kürzeste Weg, es zu schreiben.
div.equalize-1, div.equalize-2, div.equalize-3 sind meine Klassen.
Ich habe diese Klassen jedem Satz von Divs zugewiesen, die angeglichen werden sollen.
Ihre Plugin-Version funktioniert meines Erachtens nicht ganz richtig – sie scheint die aktuelle maxHeight anzuwenden, BEVOR sie alle Selektoren durchlaufen hat, sodass sie nur für Elemente NACH dem höchsten korrekt ist. Die ursprüngliche Version ist jedoch in Ordnung.
Das ist wirklich wichtig, damit das Layout funktioniert. Entschuldigung, dass ich so neu in JS bin, aber ich muss zwei Divs auf die gleiche Höhe bringen. In CSS nenne ich meine Div-IDs #slides und #product. Füge ich das so in die Klammern ein? Es scheint nichts zu tun.
Könnte mir jemand helfen zu verstehen, wie die Lücken gefüllt werden? Ich habe zwei nebeneinanderliegende Divs: #slideshow und #menuVertical, die ich in .equalize einschließe. Ich kann einfach nicht herausfinden, wo ich diese im Plugin einfügen soll.
Habe dieses Snippet verwendet. Vielen Dank, dass Sie es zur Verfügung gestellt haben!
Ich musste dies ein wenig erweitern, da ich es im Kontext eines responsiven Designs verwende. Dank einer Stack Overflow Antwort konnte ich mein Skript auslösen, wenn der Benutzer das Ändern der Fenstergröße pausiert oder beendet.
Ich dachte, jemand anderes hätte vielleicht das gleiche Problem, also dachte ich, ich teile es!
Hallo John, ich benutze deinen Code. Es funktioniert für $(‘.equalize’).equalize(); aber nicht für $(‘div.equalize-1, div.equalize-2, div.equalize-3’).equalize();
Ich habe die gleiche Funktion verwendet, aber sie funktioniert beim ersten Versuch nicht. Ich muss die Website aktualisieren, um zu sehen, dass sie funktioniert. sollte ich document.ready oder window.onload verwenden. Warum tritt dieses Problem auf dem Server in der Website auf? Verursacht die Codeanordnung Probleme?
Ich verwende das Folgende, sowohl in document.ready als auch bei window.resize Es funktioniert meistens, aber selten nicht... hat das etwas mit dem Browser-Cache zu tun?
Für alle, die nach einer funktionierenden responsiven Lösung suchen, die das von Robert erwähnte Problem behebt, sollte dies funktionieren! Beachten Sie, dass alle Elemente, die Sie auf die gleiche Höhe bringen möchten, die gleiche Klasse (.same-height) haben müssen.
Wenn Sie einen weiteren Abschnitt von Elementen auf der gleichen Seite mit dieser Funktion nutzen möchten, müssen Sie diesen Elementen eine andere Klasse zuweisen (.same-height2) und so weiter...
Die Klasse (.same-height) funktioniert nur bei Bildschirmbreiten über 700 Pixel. Es gibt selten einen Fall, in dem Sie möchten, dass alle Elemente unterhalb dieser Bildschirmgröße die gleiche Höhe haben, es sei denn, die Elemente befinden sich immer noch in einer Reihe.
Wenn Sie möchten, dass die Elemente auch auf dem Handy die gleiche Höhe haben, verwenden Sie einfach die Klasse (.same-height-all). „all“ bedeutet „alle Bildschirmgrößen“.
Hier ist ein Beispiel, wie man es benutzt
Und hier ist der Code zum Einfügen in Ihre JS-Datei
Ich denke, Sie können $(“div”).removeAttr(“style”); am Anfang des Codes hinzufügen, während Sie den Listener für das Größenänderungsereignis hinzufügen. Damit der Höhenwert zurückgesetzt wird, wenn das Fenster die Größe ändert.
Es funktionierte so einfach, ich habe nur meinen Klassennamen ersetzt und es hat funktioniert. Danke. PS: Sie könnten eine Erklärung für Anfänger hinzufügen, auch wenn es einfach ist.
Ich weiß nicht warum. Es funktioniert offline, aber wenn ich die Seite auf den Server lade, wird die Höhe kleiner als der Inhalt. Und manchmal ändert sich die Höhe beim Neuladen des Browsers in Safari oder Firefox.
Ich glaube, das liegt daran, dass Ihre Seite nicht vollständig geladen ist. Versuchen Sie, diesen Code nach dem Laden des Fensters zu starten.
Interessanterweise hatte ich das gleiche Problem. Es funktionierte großartig auf der Festplatte, aber als ich die Dateien auf den Server hochlud, funktionierte das Skript aus irgendeinem Grund nicht auf die gleiche Weise. Es setzte tatsächlich die Höhe jedes Divs auf die Höhe des ersten.
…zumindest bis ich aktualisierte.
Liebe den Browser-Cache.
das ist sooo gut! danke!
…eigentlich habe ich eine kleine Frage. Wie implementiert man das auf mehreren Divs?
zum Beispiel habe ich 3 Sätze von 2 Divs auf einer Seite. Ich möchte nur, dass die Sätze angeglichen werden, nicht alle Divs auf der Seite. Ich mache mir nichts daraus, mehrere Klassen zu verwenden, aber was ist der kürzeste Weg, es zu schreiben.
div.equalize-1, div.equalize-2, div.equalize-3 sind meine Klassen.
Ich habe diese Klassen jedem Satz von Divs zugewiesen, die angeglichen werden sollen.
Jeder Tipp wäre toll, danke.
// Plugin $.fn.equalize = function() { var maxHeight = 0; return this.each(function(){ var $this = $(this); if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } $this.height(maxHeight); }); }; // Use generic class $('.equalize').equalize(); OR $('div.equalize-1, div.equalize-2, div.equalize-3').equalize();Hoppla, ich muss die folgende Zeile ersetzen
if ($this.height() > maxHeight) { maxHeight = $this.height(); }Vergessen, die „$this“-Variable zu verwenden!
Ihre Plugin-Version funktioniert meines Erachtens nicht ganz richtig – sie scheint die aktuelle maxHeight anzuwenden, BEVOR sie alle Selektoren durchlaufen hat, sodass sie nur für Elemente NACH dem höchsten korrekt ist.
Die ursprüngliche Version ist jedoch in Ordnung.
Danke Chris, das ist so einfach, ich hätte es mir selbst ausgedacht
Das ist wirklich wichtig, damit das Layout funktioniert. Entschuldigung, dass ich so neu in JS bin, aber ich muss zwei Divs auf die gleiche Höhe bringen. In CSS nenne ich meine Div-IDs #slides und #product. Füge ich das so in die Klammern ein? Es scheint nichts zu tun.
Vielen Dank,
var maxHeight = 0;
$(‘#slides’).each(function(){
if ($(this).height() > maxHeight) { maxHeight = $(this).height(); }
});
$(‘#product’).height(maxHeight);
Könnte mir jemand helfen zu verstehen, wie die Lücken gefüllt werden? Ich habe zwei nebeneinanderliegende Divs: #slideshow und #menuVertical, die ich in .equalize einschließe. Ich kann einfach nicht herausfinden, wo ich diese im Plugin einfügen soll.
Vielen Dank.
Funktioniert das beim Ändern der Fenstergröße?
Das ist ein alter Beitrag, aber ich konnte das in einer Zeile machen, während ich die Variable gesetzt habe.
var h = Math.max.apply(Math, $.map($(‘.el’),function(el){return $(el).height()}));
$(“.equalize”).css({‘height’:$(“.equalize”).height()})
Habe dieses Snippet verwendet. Vielen Dank, dass Sie es zur Verfügung gestellt haben!
Ich musste dies ein wenig erweitern, da ich es im Kontext eines responsiven Designs verwende. Dank einer Stack Overflow Antwort konnte ich mein Skript auslösen, wenn der Benutzer das Ändern der Fenstergröße pausiert oder beendet.
Ich dachte, jemand anderes hätte vielleicht das gleiche Problem, also dachte ich, ich teile es!
@Chris
Ihre Plugin-Version ist falsch: Wenn eine nachfolgende Box höher ist, werden nur diese und alle nachfolgenden Boxen in der Größe angepasst.
Hier ist eine Erweiterung, um nur bestimmte Elemente innerhalb eines bestimmten Containers abzugleichen
Ich habe das Plugin modifiziert und es funktioniert für mich gut.
Hallo John, ich benutze deinen Code. Es funktioniert für
$(‘.equalize’).equalize();
aber nicht für
$(‘div.equalize-1, div.equalize-2, div.equalize-3’).equalize();
Hallo,
Ich habe die gleiche Funktion verwendet, aber sie funktioniert beim ersten Versuch nicht.
Ich muss die Website aktualisieren, um zu sehen, dass sie funktioniert.
sollte ich document.ready oder window.onload verwenden.
Warum tritt dieses Problem auf dem Server in der Website auf? Verursacht die Codeanordnung Probleme?
Ich verwende das Folgende, sowohl in document.ready als auch bei window.resize
Es funktioniert meistens, aber selten nicht... hat das etwas mit dem Browser-Cache zu tun?
http://codepen.io/vikired/pen/QEaKav
wow! Das spart mir viel Zeit, wenn das Umbrechen meines Divs wegen ungleicher Höhen mein Div bricht. Danke, dass Sie das zur Verfügung gestellt haben!
Für alle, die nach einer funktionierenden responsiven Lösung suchen, die das von Robert erwähnte Problem behebt, sollte dies funktionieren! Beachten Sie, dass alle Elemente, die Sie auf die gleiche Höhe bringen möchten, die gleiche Klasse (.same-height) haben müssen.
Wenn Sie einen weiteren Abschnitt von Elementen auf der gleichen Seite mit dieser Funktion nutzen möchten, müssen Sie diesen Elementen eine andere Klasse zuweisen (.same-height2) und so weiter...
Die Klasse (.same-height) funktioniert nur bei Bildschirmbreiten über 700 Pixel. Es gibt selten einen Fall, in dem Sie möchten, dass alle Elemente unterhalb dieser Bildschirmgröße die gleiche Höhe haben, es sei denn, die Elemente befinden sich immer noch in einer Reihe.
Wenn Sie möchten, dass die Elemente auch auf dem Handy die gleiche Höhe haben, verwenden Sie einfach die Klasse (.same-height-all). „all“ bedeutet „alle Bildschirmgrößen“.
Hier ist ein Beispiel, wie man es benutzt
Und hier ist der Code zum Einfügen in Ihre JS-Datei
Das ist die einzige, die für mich funktioniert hat. Hat perfekt funktioniert, danke! Schön, dass Mobile ausgeschlossen ist, da alles gestapelt ist.
Für responsive Websites
Ich denke, Sie können $(“div”).removeAttr(“style”); am Anfang des Codes hinzufügen, während Sie den Listener für das Größenänderungsereignis hinzufügen. Damit der Höhenwert zurückgesetzt wird, wenn das Fenster die Größe ändert.
Es funktionierte so einfach, ich habe nur meinen Klassennamen ersetzt und es hat funktioniert. Danke.
PS: Sie könnten eine Erklärung für Anfänger hinzufügen, auch wenn es einfach ist.