【发布时间】:2010-09-11 05:55:23
【问题描述】:
我有一个可以滑入和滑出的 div。 为此,我只需将高度每秒增加 2px,直到从高度 0 开始的预设高度。
考虑到 div 的起始属性是 display:none 和 height:0,是否有办法确定 div 的内容高度,因为内容是不可预测的高度?
谢谢。
【问题讨论】:
标签: javascript html height slide
我有一个可以滑入和滑出的 div。 为此,我只需将高度每秒增加 2px,直到从高度 0 开始的预设高度。
考虑到 div 的起始属性是 display:none 和 height:0,是否有办法确定 div 的内容高度,因为内容是不可预测的高度?
谢谢。
【问题讨论】:
标签: javascript html height slide
诀窍是暂时显示它,测量高度,然后再次隐藏它。如果你使用可见性:隐藏和位置:绝对,它不会在你这样做的时候改变页面布局。
function getElementHeight(el)
{
var styles = {
visibility: el.style.visibility,
height: el.style.height,
position: el.style.position,
display: el.style.display
};
el.style.visibility = "hidden";
el.style.height = "auto";
el.style.position = "absolute";
el.style.display = "block";
var height = el.offsetHeight;
el.style.display = styles.display;
el.style.position = styles.position;
el.style.height = styles.height;
el.style.visibility = styles.visibility;
return height;
}
如果你想得到样式高度应该是多少,可以在var height = el.offsetHeight;后面加上这两行:
el.style.height = height + "px";
height += (height - el.offsetHeight);
【讨论】: