jQuery:「jQueryAutoHeight.js」を使用してカラムの高さを揃える

jQueryjQueryAutoHeight.jsプラグインを使用してカラム高さを揃えた時の方法をメモします。

WEBページを作成している時に、ボックスごとに高さを揃えて表示したい場合があります。
データベースより値を出力する場合など、データによっては小さいものや大きいものなどが混雑していると出力時にレイアウトが崩れてしまいます。

高さが決まっている場合は設定する必要はないのですが、高さが決まっていない場合など「jQueryAutoHeight.js」を使用すると簡単にカラムの高さを揃えることができます。

下記のサイトよりダウンロードできます。

jQueryAutoHeight.js – 複数のカラムの高さを最大値にそろえるjQueryプラグイン

使用方法が簡単でとても使いやすいです。


jQueryAutoHeight.jsの使用方法

上記リンクから「jQueryAutoHeight.js」をダウンロードします。
jQueryとjQueryAutoHeight.jsを読み込み使用します。

指定した全てのカラムの高さを揃える場合

js

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript" src="jQueryAutoHeight.js"></script>
<script type="application/javascript">
$(function(){
    $('.box').autoHeight();
});
</script>

css

<style type="text/css">
#main {
    width: 500px;
    margin: 0 auto;
}
.box {
    width: 80px;
    padding: 10px;
    border: 1px dashed #0000FF;
    margin: 5px;
    float: left;
    display: block;
}
</style>

html

<div id="main">
    <div class="box">test</div>
    <div class="box">test<br>test<br>test<br>test<br>test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
</div>

表示例

・使用前

jQueryAutoHeight1

・使用後

jQueryAutoHeight2

指定した要素の高さを全て同じ高さで揃えて表示されます。


一行ごとの高さで揃える場合

js

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript" src="jQueryAutoHeight.js"></script>
<script type="application/javascript">
$(function(){
    $('.box').autoHeight({column:4, clear:1});
});
</script>

html

<div id="main">
    <div class="box">test</div>
    <div class="box">サンプル<br>サンプル<br>サンプル<br>サンプル<br>サンプル</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">あいうえおかきくけこさしすせそたちつてと</div>
    <div class="box">test</div>
    <div class="box">test</div>
    <div class="box">test</div>
</div>

表示例

・使用前

jQueryAutoHeight3

・使用後

jQueryAutoHeight4

高さを一行ごとに揃えて表示されます。


jQuery:HTMLの要素にclassを追加・削除する方法

jQueryを使用してHTML要素class追加削除をしたい場合があります。

クリックやマウスオーバーした時などにスタイルを変更したい場合、
HTMLの要素のclassを変更すれば用意しておいたスタイルに変えることができます。

下記にjQueryの「addClass」「removeClass」「toggleClass」メソッドを使用して、
HTMLの要素にclassを追加したり、削除したりする方法をメモします。


addClass

指定したHTMLの要素にclassを追加します。

$('要素').addClass('クラス名');

removeClass

指定したHTMLの要素のclassを削除します。

$('要素').removeClass('クラス名');

toggleClass

指定したHTMLの要素のclassがなければ追加し、ある場合は削除します。

$('要素').toggleClass('クラス名');

使用例(toggleClass)

toggleClassを使用してマウスオーバーした時にclassを追加・削除をした場合です。

JS

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    $("#sample").mouseover(function(){
        $(this).toggleClass('hoge');
    });
});
</script>

HTML

<div id="sample">
サンプル
</div>

「hoge」クラスのCSSを用意しておけば、スタイル変更することができます。


複数クラスを追加・削除する場合はスペースで区切ると複数指定することができます。

$('要素').addClass('クラス名 クラス名');

jQuery:css()メソッドで指定した要素にCSSを追加する

jQueryで指定した要素のスタイル追加・変更する場合、css()メソッドを使用します。

css()メソッドは下記のように使用します。

$('要素').css('プロパティ', '値');

CSSプロパティを複数設定する場合は下記のように使用します。

$('要素').css({'プロパティ':'値', 'プロパティ':'値'});

アクション時に指定した要素のスタイル変更させたいなど、色々な場面で使うことが多いと思います。

今回はjQuerycss()メソッドを使用して、指定した要素のCSS追加・変更する方法をメモします。


ボタンをクリック時、指定した要素のCSSを追加・変更

jQueryを読み込みます。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

HTML

<input type="button" id="click" value="クリック">

<div id="hoge">
テキスト
</div>

JS

・文字の色を変更する場合

<script type="text/javascript">
$(function(){
    $("#click").click(function(){
        $('#hoge').css('color', '#0000FF');
    });
});
</script>

・複数スタイルを追加する場合(色、フォントサイズ)

<script type="text/javascript">
$(function(){
    $("#click").click(function(){
        $('#hoge').css({'color':'#0000FF', 'font-size':'30px'});
    });
});
</script>

・CSSを削除する場合

値を空にするとCSSを削除することができます。

<script type="text/javascript">
$(function(){
    $("#click").click(function(){
        $('#hoge').css('color', '');
    });
});
</script>

jQuery:jQueryで開くメニューの作成方法

WEBサイトサイドバースマートフォンのサイトなどで、クリックするとアコーディオンのように開いたり、閉じたりするメニューがあります。

jquery_openmenu3

jQueryの「slideToggle()」を使用すれば簡単に実装することができます。

jQueryで見出しをクリックした時に開いたり閉じたりするアコーディオンメニューを作成する方法をメモします。


slideToggle()

$("p").slideToggle([speed], [callback]);

指定した要素をスライドしながら、表示のものを非表示にし、非表示のものを表示にします。

[speed]にはスライドするスピードを指定します。
「”slow”」「”normal”」「”fast”」か「1000」のように数値で記述します。
デフォルトでは「”normal”」が指定されています。

[callback]にはスライド完了後に呼び出したい処理を記述します。
処理がない場合は記述しません。


開くメニュー・閉じるメニュー

JS

jQueryを読み込み、下記のコードを記述します。
「accordion」クラス内の「p」タグがクリックされた場合、処理するように設定しています。
クリックした要素の次の「ul」タグを表示・非表示します。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    $('.accordion p').click(function(){
        $(this).next('ul').slideToggle(500);
    });
});
</script>

CSS

アコーディオンメニューのスタイルを指定します。
アクセス時は「ul」タグを「display:none;」で非表示にするように設定しています。

<style type="text/css">
div#menu {
    width: 300px;
    border: 1px solid #CCC;
    padding: 10px;
    margin: 10px;
}
ul.accordion ul {
    display:none;
}
p.click {
    display: block;
    padding: 10px 0;
    border-bottom: 1px dotted #0099CC;
}
ul.accordion .list {
    padding-left: 20px;
}
ul.accordion .list li {
    padding: 10px 0;
}
</style>

HTML

見出しの箇所は「p」タグで指定し、表示・非表示したいメニューをpタグの後に記述します。
下記のようにリストの中にさらにリストを作ることも可能です。

<div id="menu">
    <ul class="accordion">
        <li>
            <p class="click">○テスト1</p>
            <ul class="list">
                <li><a href="#">テスト1-1</a></li>
                <li><a href="#">テスト1-2</a></li>
                <li>
                    <p class="click">○テスト3</p>
                    <ul class="list">
                        <li><a href="#">テスト3-1</a></li>
                        <li><a href="#">テスト3-2</a></li>
                        <li><a href="#">テスト3-3</a></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li>
            <p class="click">○テスト2</p>
            <ul class="list">
                <li><a href="#">テスト2-1</a></li>
                <li><a href="#">テスト2-2</a></li>
                <li><a href="#">テスト2-3</a></li>
            </ul>
        </li>
    </ul>
</div>

アクセス時は下記のように閉じた状態で表示されます。

jquery_openmenu1

見出し部分をクリックすると非表示になっているメニューがスライドして開きます。

jquery_openmenu2

さらにメニューの中にメニューがある場合、見出しをクリックすると下記のように表示されます。

jquery_openmenu3

開いたメニューの見出しを再度クリックすればメニューを閉じることができます。


メニューが多い場合など、WEBサイトが縦に長いサイトなってしまいますが、
これを使用すればスッキリとまとめて表示させることができると思います。

jQuery:jQueryで複数の画像をクロスフェードして切り替える

jQueryを使用して、複数の画像をクロスフェードしたり、スライドショーしたりするプラグインは色々あります。

設定がわかりやすく、シンプルな処理のものを探していたところ、下記のページを見つけました。

jQueryで画像がクロスフェードするシンプルな画像ビューアー(自動再生)を作成する方法

とてもシンプルで簡単に実装ができ、コードもわかりやすいのでおすすめです。
上記の設定をした時の方法をメモします。


複数の画像をクロスフェードして切り替える

切り替えたい画像を用意し、下記のソースを記述します。

JS

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var setImg = '#viewer';
    var fadeSpeed = 1000;
    var switchDelay = 3000;

    $(setImg).children('img').css({opacity:'0'});
    $(setImg + ' img:first').stop().animate({opacity:'1',zIndex:'20'},fadeSpeed);

    setInterval(function(){
        $(setImg + ' :first-child').animate({opacity:'0'},fadeSpeed).next('img').animate({opacity:'1'},fadeSpeed).end().appendTo(setImg);
    },switchDelay);
});
</script>

jQueryを読み込みます。
「setImg」にimgタグを囲う要素のidまたはclassを指定します。
「fadeSpeed」にはフェードするスピードを指定します。
「switchDelay」には画像が切り替える時間を指定します。

setInterval()を使用し、指定した時間で繰り返し処理を行っています。


CSS

<style type="text/css">
#viewer {
    margin: 0 auto;
    width: 900px;
    height: 300px;
    text-align: left;
    overflow: hidden;
    position: relative;
}

#viewer img {
    top: 0;
    left: 0;
    position: absolute;
}
</style>

画像のサイズや位置等を指定します。


HTML

<div id="viewer">
    <img src="hoge1.jpg" />
    <img src="hoge2.jpg" />
    <img src="hoge3.jpg" />
</div>

表示したい画像のimgタグをjQueryで指定した要素の中に記述します。
画像を追加したい場合は、imgタグを追加します。


上記の設定をすれば、複数の画像をクロスフェードして切り替えながら、繰り返し表示することができます。
ソースもわかりやすいので自分なりにカスタマイズすることもできそうです。