jQuery Auto Height - 複数のカラムの高さを最大値にそろえるjQueryプラグイン

  • 2009年8月17日 17:16
  • jQuery Plugins

jQuery Auto Height とは

jQuery Auto Height とは、複数のボックスの高さを自動的にそろえるシンプルな jQueryプラグインです。高さのそろえ方は、次の2通りです。

  • セレクタで指定したすべての要素を、その中の最大値にそろえる
  • セレクタで指定した要素を、オプションで渡した数ごとに、その中の最大値にそろえる(1行ごとにそろえられる)

サンプル

ダウンロード

使い方

ファイルの読み込み

ダウンロードしたファイルを解凍し、適当なディレクトリにアップロードして、jQuery を読み込んだ後で jqueryAutoHeight.js を読み込みます。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jqueryAutoHeight.js"></script>

後は、これらの読み込んだファイルの後ろで、高さをそろえたいセレクタに .autoHeight() を適用すればOKです。

セレクタで指定したすべての要素を、その中の最大値にそろえる

この場合は、以下のようなコードを書けばOKです。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jqueryAutoHeight.js"></script>
<script type="text/javascript">
jQuery(function($){
    $(揃えたいセレクタ).autoHeight();
});
</script>

オプション設定

column : n

セレクタで指定した要素を、引数で渡した数ごとに、その中の最大値にそろえます。

ちょっと分かりにくいかも知れませんので図で見てみましょう。まず、下図は普通にすべての要素をそろえた状態です。

jquery-auto-height01.png

この場合のコードは先ほどの通り次のようになりますね。

jQuery(function($){
    $(揃えたいセレクタ).autoHeight();
});

これを1行ごとにそろえることができます。「1行ごと」というのは、ボックスの幅(width)が固定されているのが前提で、正確には「n個ごと」になります。

下図の場合は、1行あたりのボックス数は「4」なので、この数を .autoHeight({column:4}); のように引数として渡してあげればOKです。

jquery-auto-height02.png

コードは以下のようになります。

jQuery(function($){
    $(揃えたいセレクタ).autoHeight({column:そろえたい数});
});

clear : 1

上記の column が設定されている場合、さらに {clear:1} を続けて設定すると、その数ごとの最初の要素に clear:both を設定することができます。

jquery-auto-height03.png

コードは以下のようになります。

jQuery(function($){
    $(揃えたいセレクタ).autoHeight({column:そろえたい数, clear:1});
});

height : 'height'

高さを minHeight ではなく height でそろえます。

このプラグインでは、IE6以外は高さを「minHeight」(css だと min-height)で設定しています。これは文字サイズのみを拡大した時に文字が見えなくなってしまわないようにするためなのですが、当然その場合はボックスの高さも変わってしまいます。この minHeight を普通に height にすれば、IE6 以外は高さが変わらなくなると思います。

そのようにしたい場合は、オプションで {height:'height'} を指定すれば、minHeight ではなく height が設定されるようになります。

$(セレクタ).autoHeight({height:'height'});

reset : 'reset'

要素の高さを取得する前に、要素に指定されている style 属性を削除してから、高さを取得するようになります。普段は使わないと思います。

オプションのまとめ

$(セレクタ).autoHeight({
    // 1行のカラム数(n個)ごとにそろえる
    column : n,
    // n個ごとの先頭に clear:both; を設定する
    clear  : 1,
    // 高さを minHeight ではなく height でそろえる
    height : 'height',
    // 高さを取得する前に一度セレクタに指定されている style 属性をリセットします
    reset : 'reset'
});

jQuery Auto Height に関するブログ記事

コメント

とても丁寧な解説ありがとうございます。
参考にさせて頂き、勉強しています。
もしよろしければ、AutoHeightプラグインを使った
WEBサイトをご存知でしたら教えて頂けないでしょうか?
実際どのような場面で役立つプラグインなのかを知りたいと思っております。
厚かましいお願いですが、らよろしくお願いいたします。

ヒルタ ユカさん、コメントありがとうございます。
事例ですが、僕が使った案件は紹介していいかどうか聞いてないので紹介できませんが、Google で検索してみたら以下のサイトで使ってくださっているようです(2012/08/06現在)。
http://www.tomokos.net/
このサイトの右側の6つの四角いブロックに適用されています。
このような「中がテキストで上限する可能性があけど高さそろえたい」というブロックに使うと効果を発揮すると思います。
参考になりましたでしょうか。

tinybeans様

なるほどと納得のご回答ありがとうございます。
このような使い方をすれば、これまで計算機片手に
CSSで調節していた細かい数値設定が必要なくなるのですね。

jQueryってすごの凄さを改めて実感しました。

現在、2冊目の本としてjQueryデザインブック(Mdn)さんの本でプラグインの作成方法などを勉強していますが、初心者の私には分からない部分が多く、いつも参考にさせていただいています。
とても助かっています。ありがとうございます。