Wie erhalten Sie die innere Höhe eines Elements, ohne Polster und Ränder?Die innere Höhe eines Elements erhalten
Keine jQuery, nur reine JS und eine Cross-Browser-Lösung (IE7 enthalten)
Wie erhalten Sie die innere Höhe eines Elements, ohne Polster und Ränder?Die innere Höhe eines Elements erhalten
Keine jQuery, nur reine JS und eine Cross-Browser-Lösung (IE7 enthalten)
var style = window.getComputedStyle(document.getElementById("Example"), null);
style.getPropertyValue("height");
Die obige Version in modernen Browsern funktionieren. Bitte überprüfen Sie currentStyle
für IE-Browser.
Sie meinen: 'parseInt (style.getPropertyValue ('Höhe'));' – vsync
Internet Explorer wird "automatisch" zurückgeben, wenn es in der CSS keine Höhe gibt http://jsfiddle.net/Kxsvx/, die Sie nicht haben die Höhe davon! – Mic
@Mic welcher Internet Explorer? – Fresheyeball
EDIT Kommentare:
http://jsfiddle.net/hTGCE/1/ (ein bisschen mehr Code als erwartet)
im Internet können Sie Funktionen wie diese finden:
function getRectangle(obj) {
var r = { top: 0, left: 0, width: 0, height: 0 };
if(!obj)
return r;
else if(typeof obj == "string")
obj = document.getElementById(obj);
if(typeof obj != "object")
return r;
if(typeof obj.offsetTop != "undefined") {
r.height = parseInt(obj.offsetHeight);
r.width = parseInt(obj.offsetWidth);
r.left = r.top = 0;
while(obj && obj.tagName != "BODY") {
r.top += parseInt(obj.offsetTop);
r.left += parseInt(obj.offsetLeft);
obj = obj.offsetParent;
}
}
return r;
}
, wenn Sie die Polsterung subtrahieren wollen/Grenze -width wird in der css-Datei und nicht dynamisch in dem style-Attribut festgelegt:
und mit der Polsterung gleich. dann berechnen Sie es.
im Internet finden Sie alle Arten von Müll-Code. Ich möchte die ultimative Antwort für dieses Geheimnis, nicht ein aufgeblähter, langsamer Code..aber danke für die Antwort :) – vsync
Wenn Sie eine dynamische Höhe ohne ein css-Attribut "Höhe" für ein Element die Methode mit "GetComputedStyle" nicht haben Arbeit. Oder ich liege falsch? – Mic
es funktioniert, habe es gerade versucht – vsync
hatte ich das gleiche Problem und fand heraus, da keine native Querplattform-Lösung ist aber die Lösung ist einfach, obwohl
var actual_h = element.offsetHeight;
if(parseInt(element.style.paddingTop.replace('px','')) > 0){
actual_h=actual_h - parseInt(element.style.paddingTop.replace('px',''));
}
if(parseInt(element.style.paddingBottom.replace('px','')) > 0){
actual_h=actual_h - parseInt(element.style.paddingBottom.replace('px',''));
}
Seien Sie darauf hingewiesen, wie MDN [Staaten] (https: //developer.mozilla. org/de-DE/docs/Web/API/HTMLElement/style # Getting_style_information), "Die' style' -Eigenschaft ist nicht nützlich, um den Stil des Elements im Allgemeinen kennenzulernen, da es nur die CSS-Deklarationen im Inline-Element des Elements darstellt Stilattribut [...] ". – Spooky
Box-Sizing funktioniert nicht in IE7 – Chandrakant
Warum 'border-box' in CSS nicht? Auf diese Weise müssen Sie sich nicht um diese Dinge kümmern ... Dann können Sie 'offsetHeight' verwenden, das die richtige Höhe ohne den Rand zurückgibt. – elclanrs
Dies ist eine sehr spezifische Frage für ein Plugin, das ich habe, das keine CSS-Kontrolle hat, ich muss nur mit dem arbeiten, was ich bekam – vsync
Also ... Ich denke, Sie können immer noch die 'Box-Sizing: Border-Box' Ich werde dir Zeit und Kopfschmerzen ersparen. – elclanrs