定義された高さで外側の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行のテキストを表示することを望んでいました)。