<li>リストや連続したブロック要素を並べる際に、
中に入る要素の内容によって、個々の高さがまちまちになってしまった場合、
高さが揃わないことで、レイアウトを整えるのが意外と面倒になったりします。
そんな際に使える、jQueryを使っての、
連続した要素の高さを(最大値に)揃える方法を紹介してみます。
サンプルはfloatで横に並べた<li>リスト要素の高さを揃えるやり方。
まずはHTMLから。
◆HTML <ul> <li><p>これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p></li> <li><p>これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p></li> </ul>
単純なリスト構成で、中身はダミーテキストですが
それぞれ量を変えて高さをバラバラにしてあります。
これに対してCSSは以下。
◆CSS
ul {
margin: 0 auto;
width: 500px;
text-align: left;
}
ul li {
margin: 0 10px 10px 0;
width: 150px;
float: left;
border: #ccc 1px solid;
display: inline;
}
ul li p {
padding: 10px;
}
ここまでのHTMLとCSSはあくまでサンプル用のソースなので
特に重要な項目はありません。
そして、これらの表示するリスト要素の
高さを揃える為のスクリプトは以下になります。
◆SCRIPT
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('ul').each(function(){
var rep = 0;
$(this).children().each(function(){
var itemHeight = parseInt($(this).css('height'));
if(itemHeight > rep){
rep = itemHeight;
};
});
$(this).children().css({height:(rep)});
});
});
</script>
<ul>に対しての子要素=「<li>」 の高さをそれぞれループさせる要領で見て
その中の最大値を全ての<li>に設定しています。
これを実際に表示すると以下の様になります。
jQuery SAME HEIGHT
別枠表示は以下から。
≫jQuery SAME HEIGHT
<li>の中の一番高さが大きい物に
全て高さが揃っています。
このサンプルでは、
<ul>~<li>のリスト要素に対して高さを揃えましたが、
親要素と子要素の構成が保たれていれば
他のタグでの構成でも使うことができます。
連続する要素の高さを揃えたいときに是非。。。
