我可以使用
在jQuery中获得高度$(item).outerHeight(true);
但我如何使用JS?
我可以用
获得li的高度document.getElementById(item).offsetHeight
但是当我尝试使用margin-top时,我总会得到“”:
document.getElementById(item).style.marginTop
答案 0 :(得分:84)
style
对象上的属性只是直接应用于元素的样式(例如,通过style
属性或代码)。所以.style.marginTop
如果你有特别指定给那个元素的东西(不是通过样式表等分配的话),它只会包含一些东西。
要获取当前计算的对象样式,可以使用currentStyle
属性(Microsoft)或getComputedStyle
函数(几乎所有其他人)。
示例:
var p = document.getElementById("target");
var style = p.currentStyle || window.getComputedStyle(p);
display("Current marginTop: " + style.marginTop);
公平警告:你得到的可能不是像素。例如,如果我在IE9中的p
元素上运行上述内容,则会返回"1em"
。
答案 1 :(得分:8)
当我在这个问题上寻找答案时,我在这个网站上发现了一些非常有用的东西。您可以在TestDbCrud.java查看。帮助我的部分如下:
{{1}}
答案 2 :(得分:5)
此外,您可以为HTML元素创建自己的outerHeight
。我不知道它是否适用于IE,但它适用于Chrome。也许,您可以使用上面的答案中建议的currentStyle
来增强下面的代码。
Object.defineProperty(Element.prototype, 'outerHeight', {
'get': function(){
var height = this.clientHeight;
var computedStyle = window.getComputedStyle(this);
height += parseInt(computedStyle.marginTop, 10);
height += parseInt(computedStyle.marginBottom, 10);
height += parseInt(computedStyle.borderTopWidth, 10);
height += parseInt(computedStyle.borderBottomWidth, 10);
return height;
}
});
这段代码允许你做这样的事情:
document.getElementById('foo').outerHeight
主要浏览器(IE,Chrome,Firefox)支持caniuse.com, getComputedStyle。
答案 3 :(得分:1)
这是我的解决方案:
第一步:选择元素
第 2 步:使用 getComputedStyle 并为其提供元素
第 3 步:现在访问所有属性
const item = document.getElementbyId('your-element-id');
const style= getComputedStyle(item);
const itemTopmargin = style.marginTop;
console.log(itemTopmargin)
它会为您提供 px 单位的边距,例如您可能不想要的“16px”。
您可以使用 parseInt()
const marginTopNumber = parseInt(itemTopmargin)
console.log(marginTopNumber)
它只会给你数值(没有任何单位)。