最初に HTML コードを見てみましょう。あなたがしたい:
<div id="arrow">▲ (view less)</div>
<div id="main">
<div id="content1">text from #content1</div>
<div id="content2">text from #content2</div>
<div id="content3">text from #content3</div>
<div id="content4">text from #content4</div>
</div>
<div id="toggle_view">view more</div>
次に、CSS については、次のようにします。
#main {overflow-y:hidden;height:100px;position:relative}
#arrow {cursor: pointer;}
#toggle_view{ cursor: pointer;}
.inactive { color: gray; }
がない場合、何かをクリックできるかどうかを判断するのは非常に困難ですcursor:pointer
。また、ボタンが非アクティブであることをユーザーに示す必要があります (たとえば、既にすべてのページを表示している場合、[さらに表示] をクリックしても意味がありません)。
よし、JavaScriptに行きましょう。あなたはライブラリを使用していると言いましたが、どのライブラリを使用していないので、jQuery を想定します。まず、変数を設定する必要があります。
var heightOfMain = $('#main').height();
var heightOfContent1 = $('#content1').height();
var differenceInHeight = heightOfMain - heightOfContent1;
次に、 をクリックすると#arrow
、 の高さを変更して、、および#main
を削除し、だけを残します (基本的に、 に等しい高さを「削除」します)。また、 を非アクティブ化することも必要です。これは、既に表示が少ない場合は「表示を減らす」と言っても意味がないためです。最後に、「もっと見る」がアクティブであることを確認します (後で切り替えます)。#content2
#content3
#content4
#content1
differenceInHeight
#arrow
$('#arrow').click(function() {
$('#main').animate({
height: heightOfContent1
});
$(this).addClass('inactive');
$('#toggle_view').removeClass('inactive');
});
最後に、有効にし#toggle_view
ます。クリックすると、削除した高さを再度追加します ( differenceInHeight
)。次に、すべてが既に表示されているため、「さらに表示」を無効にできます。最後に、「ビューレス」を再度有効にする必要があります。
$('#toggle_view').click(function() {
//you want to remove contents 2 through 4, which have a combined height
//of differenceInHeight
$('#main').animate({
height: differenceInHeight });
$(this).hide();
$('#arrow').show();
});
すべてをまとめたものについては、この jsFiddleを参照してください。