设置具有定义高度的外部 div 的想法对我来说不是一个可能的解决方案。我的 php 代码是一个模板,我的 div 的内容总是在变化 - 使用数据库中的内容归档,这取决于用户单击的链接。这个 div 位于页面顶部,其他信息必须显示在它的正下方。
所以,我想出了这个非常适合我的解决方案。
首先,我从 CSS 中删除了设置的高度并添加了“display: none;” - 这允许 div 加载完全打开,但用户看不到它。
然后我使用 JavaScript(在本例中为 jQuery)来获取高度。接下来,同样使用 jQuery,我将显示设置为阻塞,并将高度设置为我需要的“关闭”设置。最后,我在 .animation 中使用获得的高度来滑动 div“打开”。
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 倍,当 div '关闭'时,客户希望显示 5 行文本)。