jQueryを使い、スクロールボックスの高さをアニメーションで変更

jQueryを使い、スクロールボックスの高さをアニメーションで拡大縮小し、隠れているテキストを表示させたり戻したりする方法。

実装例

詳細

用語A
用語Aの説明文1
用語Aの説明文2
用語B
用語Bの説明文1
用語C
用語Cの説明文1
用語Cの説明文2
用語Cの説明文3
用語D
用語Dの説明文1
用語E
用語Eの説明文1
用語Eの説明文2

実装例(サンプル)の動作について

  1. 「全表示」ボタンをクリックすると、ベージュ色のボックス要素の高さを、コンテンツを全て表示できる高さまでアニメーションで拡大する。ボタンのテキストが、「戻す」に変わる。
  2. 「戻す」ボタンをクリックすると、元のスクロールボックスにアニメーションで戻る。

ソースコード

JavaScript

<script type="text/javascript">
jQuery( function() {
    var $flag = true;
    var $sampleBoxHeightMax = jQuery( '#sampleBox' )[0].scrollHeight;
    jQuery( '#sampleButton' ).click( function() {
        if( $flag ){
            $flag = false;
            jQuery( '#sampleBox' ).animate(
                {
                    height: $sampleBoxHeightMax,
                },
                {
                    duration: 'slow',
                }
            );
            jQuery( this ).html( '戻す' );
        }else{
            $flag = true;
            jQuery( '#sampleBox' ).animate(
                {
                    height: '130px',
                },
                {
                    duration: 'slow',
                }
            );
            jQuery( this ).html( '全表示' );
        }
    } );
} );
</script>

使用している主なjQuery api

使用している主なDOM

HTML

<div id="sampleWrap">
    <div id="sampleHeader">
        <h2>詳細</h2>
        <button id="sampleButton">全表示</button>
        <div style="clear: both;"></div>
    </div>
    <div id="sampleBox">
        <dl>
            <dt>用語A</dt>
                <dd>用語Aの説明文1</dd>
                <dd>用語Aの説明文2</dd>
            <dt>用語B</dt>
                <dd>用語Bの説明文1</dd>
            <dt>用語C</dt>
                <dd>用語Cの説明文1</dd>
                <dd>用語Cの説明文2</dd>
                <dd>用語Cの説明文3</dd>
            <dt>用語D</dt>
                <dd>用語Dの説明文1</dd>
            <dt>用語E</dt>
                <dd>用語Eの説明文1</dd>
                <dd>用語Eの説明文2</dd>
        </dl>
    </div>
</div>

CSS

<style>
#sampleWrap {
    padding: 10px;
    width: 300px;
    background-color: gold;
    border: 1px solid gray;
    border-radius: 10px;
}
#sampleHeader h2 {
    float: left;
    margin: 0;
    padding: 0;
    font-size: 16px;
    background: none;
    border: none;
}
#sampleButton {
    float: right;
    font-size: 16px;
}
#sampleBox {
    padding: 10px;
    width: 280px;
    height: 130px;
    overflow: auto;
    background-color: #f5f5dc;
    line-height: 1.5em;
    font-size: 16px;
    border: 1px solid gray;
}
</style>

スポンサード リンク

カテゴリー: API, JavaScript, jQuery, アニメーション, サイズ, スクロール, 逆引き パーマリンク