设置一个具有指定高度的外部div的想法对我来说不是一个可行的解决方案。我的php代码是一个模板,我的div的内容总是在变化 - 根据用户点击的链接从数据库中提取内容。这个div位于页面顶部,其他信息必须正确显示在其下。
所以,我想出了这个解决方案对我来说效果很好。
首先,我从CSS中删除了设置高度并添加了“display:none;” - 这允许div加载完全打开,但用户看不到它。
然后我使用JavaScript(本例中为jQuery)来获取高度。接下来,在jQuery中,我将显示设置为block,并将高度设置为我需要的“关闭”设置。最后,我用动画中的获得的高度来滑动div'open'。
的CSS代码:
#main_description {
position: relative;
display: none;
/*height: 8.92855em; -> this was the original 'closed' height*/
border-bottom: 1px solid #a9a5a6;
overflow: hidden;
}
中的JavaScript:
var state = true;
var descriptionHeight = $("#main_description").height();
// for testing -> alert("Description Height: " + descriptionHeight);
$("#main_description").css({"display" : "block", "height" : "8.92855em"});
$("#main_description_toggle").click(function()
{
if (state)
{
$("#main_description").animate({
height: descriptionHeight + "px"
}, 1000);
$("#main_description_toggle").html("<a>less ▲</a>");
}
else
{
$("#main_description").animate({
height: "8.92855em"
}, 1000);
$("#main_description_toggle").html("<a>more ▼</a>");
}
state = !state;
});
(我知道,8的高度。92855em似乎很奇怪,但是这是行高的5倍,客户想要5行文本来显示div何时“关闭”)。
“高度”属性在'%'用法上很少按照预期工作。你确定你不能用'bottom:0'或'top:0'来做这个动画吗? – 2012-07-16 12:58:12
你能提供更多信息吗?你的HTML看起来像什么?你喜欢哪种风格?也许提供一个http://jsfiddle.net会有所帮助。另外高度:100%;在大多数情况下不会像人们希望的那样工作。 – Christoph 2012-07-16 12:58:16
为html和正文标记添加100%高度,然后再试一次 – 2012-07-16 12:58:55