Wie erhalte ich die Höhe eines DIV unter Berücksichtigung der Ränder des inneren Elements?

8

Beachten Sie die folgende Markierung:

%Vor%

Ich möchte die tatsächliche endgültige Höhe von outerElement mit Javascript erhalten. Mir ist aufgefallen, dass ich, wenn ich die vertikalen Ränder von innerElement entferne, in der Lage bin zu bekommen, was ich will, aber ich kann keine Stile innerhalb von outerElement ändern.

Wie mache ich das?

Obs: Ich habe bereits Höhe, scrollheight und offsetHeight in allen Browsern versucht. Chrome gibt mir den erwarteten Wert (einschließlich der Ränder des inneren Elements) für scrollHeight . Alle anderen Browser schlagen fehl.

    
André Pena 31.03.2010, 17:13
quelle

11 Antworten

1

Ich würde jQuery verwenden. Versuchen Sie es mit

%Vor%

Und sehen Sie, ob das so ist.

    
Levi Hackwith 31.03.2010 17:39
quelle
1

Fügen Sie clearfix hinzu, verwenden Sie jquery height () und entfernen Sie die clearfix-Klasse erneut.

Das wird funktionieren. :)

    
lufi 13.02.2014 16:15
quelle
0

Sie könnten jQuery verwenden:

%Vor%

einer von denen ist verpflichtet zu arbeiten.

    
chadley 31.03.2010 17:41
quelle
0

Versuchen Sie es mit clientHeight

%Vor%

Ich weiß, was du denkst ... "Das wird nicht funktionieren!" und ach, das tut es nicht ... aber wenn du etwas wie outerElement hinzufügst ... sogar für einen Moment ...

%Vor%

Nicht die schönste Lösung, aber es funktioniert, und wenn Sie herausfinden können, warum es funktioniert (ich weiß verdammt noch mal nicht: P), könnten Sie näher an gut sein Lösung ...

Einige ältere Browser unterstützen es möglicherweise nicht, aber Sie müssten es sich ansehen; Ich kann sie nicht auflisten.

    
Richard JP Le Guen 31.03.2010 17:17
quelle
0

ok auch nicht hübsch, aber so mache ich es (Disclaimer: Ich habe das einmal irgendwo gestohlen)

%Vor%     
plodder 31.03.2010 21:53
quelle
0

Das ist eine knifflige Frage, wie beurteilen Sie die "angemessene" Höhe? Die Höhe des Inhalts innerhalb einschließlich Grenzen, was ist Padding oder die tatsächliche Marge verwenden? Im Allgemeinen verhalten sich Browser in den meisten Dingen ziemlich konsistent, aber quirksmode kann aufklären, was Sie brauchen. (Als Hinweis, wenn Sie den tatsächlichen Rand verwendet, wird es weh tun.)

    
bmeck 01.04.2010 23:46
quelle
0

Ich schätze, du solltest alle Elementeigenschaften werfen und die Summe bilden nur auf diese Weise kannst du die genaue Höhe kennen ... aber im Fall der Höhe ist es zB klar gestellt: Beide Eigenschaften finde ich nicht ist möglich, die Höhe eines Elements zu kennen.

Ein 3-sekündiger Gedanke könnte etwa lauten:

var o document.getElementById ('id'). style;

%Vor%

Aber ich denke, Sie müssen auch die document.getElementById ('ID') .Height-Wert, wenn sie es haben .... ist thogtgth kann aber helfen ..

am besten =)

    
nahum silva 02.04.2010 06:49
quelle
0

WARNUNG WARNUNG clientHeight funktioniert fast, enthält jedoch keine Ränder: (

Ich dachte nur, ich würde das heute versuchen, und während Nahumsilva & amp; plodder hat es fast richtig (nahumsilvas Version scheint eher Browser-übergreifend zu sein. "plodder's scheint in Chrome / WebKit nicht zu funktionieren, aber ich bin kein Experte für diese Dinge"), beide haben verpasst, dass ein Element es haben könnte berechnete Stilelemente, die nicht durch einen eigenen Stil definiert sind.

Das hat mich verrückt gemacht - ich habe mich gefragt, wo meine <p> -Elemente zusätzliche 16px Randhöhe bekommen - bis ich merkte, dass es aus dem berechneten Stil kommt.

Kurz gesagt, ein Ansatz wie Nahumsilva / Plodder arbeitete für mich, mit der zusätzlichen Bedingung, dass Sie den berechneten Stil des Elements mit window.getComputedStyle( element, null ) erhalten sollten, was ein CSSStyleDeclaration -Objekt zurückgibt (wie element.style ). element.offsetHeight / element.clientHeight sollte dir die Höhe ohne Ränder geben, also sieht die ganze Sache wie folgt aus:

%Vor%     
Henry Cooke 02.07.2010 04:07
quelle
0
JohnyM 19.11.2014 06:24
quelle
0

Wenn Sie den äußeren Teil auf Stil display : inline-block; setzen können, dann enthält scrollHeight die Ränder der untergeordneten Elemente.

Es funktioniert auch, wenn Sie den Stil display : flex; (unterstützt von IE 9 +) festlegen

    
Data Meister 07.08.2017 10:32
quelle
-3

Diese Antwort mag ein wenig offensichtlich sein, aber wenn Sie den Rand bereits kennen, warum fügen Sie ihn nicht einfach manuell zur Höhe hinzu?

    
Baloneysammitch 05.04.2010 22:04
quelle

Tags und Links