jQuery:「Page Scroller」でスムーズにスクロールする

jQueryの「Page Scroller」を使用して、ページ内リンク
スムーズスクロールした際の方法をメモします。

「Page Scroller」はシンプルで簡単に設定することが可能です。
「Page Scroller」を読み込み、ページ内リンクをするだけで
スムーズにスクロールすることができます。

下記のリンク先でダウンロードできます。

Page Scroller

バージョンは「Page Scroller -version 3.0.8」を使用しました。
※3.0.7以降は商用利用も無料です。
※jQuery1.9では動作しなかったのでjQuery1.8を使用しています。


Page Scrollerの使い方

jQuery

jQueryとPage Scrollerを読み込みます。

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

HTML

移動先にidを指定し、ページ内リンクを張ります。
リンクをクリックするとスムーズにスクロールします。

<div id="top">ページトップ</div>
・
・
・
(省略)
<a href="#top">ページトップへ</a>

また、Page Scrollerを使用しない場合は下記のように、
ページ内リンクに「class=”nopscr”」を設定します。

<div id="top">ページトップ</div>
・
・
・
(省略)
<a href="#top" class="nopscr">ページトップへ</a>

他にもスクロールのスピードを変えることができたり、
色々とオプションがあるのでシンプルで使いやすいです。

jQuery:jQueryでsubmit(サブミット)する方法

jQueryを使用し、フォームの値をsubmitする方法をメモします。

送信したいデータを変形や追加、バリデーションのチェックなど
jQueryjavascriptを使用するとデータを送信する前に処理することが可能です。
色々な用途で使用できます。

いつも忘れてしまうので、jQueryformsubmitする方法と
javascriptformsubmitする方法をメモします。


jQueryでsubmitする方法

jQuery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('#form1').submit(function() {
        // 処理
    });
});
</script>

または次のように記述します。
ボタンがクリックされた場合、サブミットしています。
私はこちらの方を使う方が多いです。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('#btn').click(function() {
        $('#form1').submit();
    });
});
</script>

HTML

<form method="post" name="form1" id="form1">
    <input type="text" name="txt" value="" />
    <input type="submit" name="btn" id="btn" value="submit">
</form>

javascriptでsubmitする方法

javascript

<script type="text/javascript">
function func_submit() {
    document.form2.submit();
}
</script>

HTML

<form method="post" name="form2" id="form2">
    <input type="text" name="txt" value="" />
    <input type="submit" name="btn" id="btn" value="submit" onclick="func_submit();" />
</form>

jQuery:FancyBox2を使用したLightbox風な表示

前回は「FancyBox1.3.4」を使用した際の使い方を書きましたが、
今回はFancyBox2の使い方をメモします。

FancyBox2ではヘルパーがあり、色々と機能を追加することができるようです。
また、FancyBox2では「jQuery1.9」でも動作します。

下記のリンク先でダウンロードできます。

FancyBox2

FancyBox2は商用以外で使用するのは無料ですが、
商用で利用する場合は有料になります。


FancyBox2の使い方

※バージョンは「FancyBox2.1.4」です。

読み込みファイル

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

<!-- FancyBox -->
<script type="text/javascript" src="./fancybox/jquery.fancybox.js?v=2.1.4"></script>
<link rel="stylesheet" type="text/css" href="./fancybox/jquery.fancybox.css?v=2.1.4" media="screen" />

・マウスホイールイベントを使用する場合

<!-- mousewheel(追加しなくてもOK) -->
<script type="text/javascript" src="./js/jquery.mousewheel-3.0.6.pack.js"></script>

・ボタンヘルパーを使用する場合

<!-- Button helper -->
<link rel="stylesheet" type="text/css" href="./fancybox/helpers/jquery.fancybox-buttons.css?v=1.0.5" />
<script type="text/javascript" src="./fancybox/helpers/jquery.fancybox-buttons.js?v=1.0.5"></script>

・サムネイルヘルパーを使用する場合

<!-- Thumbnail helper -->
<link rel="stylesheet" type="text/css" href="./fancybox/helpers/jquery.fancybox-thumbs.css?v=1.0.7" />
<script type="text/javascript" src="./fancybox/helpers/jquery.fancybox-thumbs.js?v=1.0.7"></script>

・メディアヘルパーを使用する場合

<!-- Media helper -->
<script type="text/javascript" src="./fancybox/helpers/jquery.fancybox-media.js?v=1.0.5"></script>

○デフォルト

「data-fancybox-group=””」に同じ値を記述すると、グループ化されます。
「title=””」に記載した場合はタイトルが出力されます。

jQuery

<script type="text/javascript">
    $(document).ready(function() {
        $('.fancybox').fancybox();
    });
</script>

HTML

<a class="fancybox" href="./img/sample1_b.jpg" data-fancybox-group="group" title=""><img src="./img/sample1_s.jpg" alt="" /></a>
<a class="fancybox" href="./img/sample2_b.jpg" data-fancybox-group="group" title=""><img src="./img/sample2_s.jpg" alt="" /></a>
<a class="fancybox" href="./img/sample3_b.jpg" data-fancybox-group="group" title=""><img src="./img/sample3_s.jpg" alt="" /></a>
<a class="fancybox" href="./img/sample4_b.jpg" data-fancybox-group="group" title=""><img src="./img/sample4_s.jpg" alt="" /></a>

○ボタンヘルパー(Button helper)を使用した場合

fancybox_1

画面上部に操作する用のボタンが表示されます。

jQuery

<script type="text/javascript">
    $(document).ready(function() {
        $('.fancybox-buttons').fancybox({
            openEffect  : 'none',
            closeEffect : 'none',

            prevEffect : 'none',
            nextEffect : 'none',

            closeBtn  : false,

            helpers : {
                title : {
                    type : 'inside'
                },
                buttons    : {}
            },

            afterLoad : function() {
                this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
            }
        });
    });
</script>

HTML

<a class="fancybox-buttons" data-fancybox-group="button" href="./img/sample1_b.jpg"><img src="./img/sample1_s.jpg" alt="" /></a>
<a class="fancybox-buttons" data-fancybox-group="button" href="./img/sample2_b.jpg"><img src="./img/sample2_s.jpg" alt="" /></a>
<a class="fancybox-buttons" data-fancybox-group="button" href="./img/sample3_b.jpg"><img src="./img/sample3_s.jpg" alt="" /></a>
<a class="fancybox-buttons" data-fancybox-group="button" href="./img/sample4_b.jpg"><img src="./img/sample4_s.jpg" alt="" /></a>

○サムネイルヘルパー(Thumbnail helper)を使用した場合

fancybox_2

画面下部に画像を切り替えるためのサムネイル画像が表示されます。

jQuery

<script type="text/javascript">
    $(document).ready(function() {
        $('.fancybox-thumbs').fancybox({
            prevEffect : 'none',
            nextEffect : 'none',

            closeBtn  : false,
            arrows    : false,
            nextClick : true,

            helpers : {
                thumbs : {
                    width  : 50,
                    height : 50
                }
            }
        });
    });
</script>

HTML

<a class="fancybox-thumbs" data-fancybox-group="thumb" href="./img/a_b.jpg"><img src="./img/a_s.jpg" alt="" /></a>
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="./img/b_b.jpg"><img src="./img/b_s.jpg" alt="" /></a>
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="./img/c_b.jpg"><img src="./img/c_s.jpg" alt="" /></a>

○メディアヘルパー(Media helper)を使用した場合

ローカル環境では実行されません。
サーバにアップした場合に実行されます。

YoutubeやVimeo、Instagramなどを表示することができます。

jQuery

<script type="text/javascript">
    $(document).ready(function() {
        $('.fancybox-media').attr('rel', 'media-gallery').fancybox({
            openEffect : 'none',
            closeEffect : 'none',
            prevEffect : 'none',
            nextEffect : 'none',

            arrows : false,
            helpers : {
                media : {},
                buttons : {}
            }
        });
    });
</script>

HTML

<a class="fancybox-media" href="http://www.youtube.com/watch?v=oJHfKAQfyN0">Youtube</a>
<a class="fancybox-media" href="http://instagram.com/p/xxxxxxxxxx/">Instagram</a>

上記以外にもレイアウトやエフェクトなどを変更できたり、
IframeやAjax、Swfなどを出力できたりなど多機能なので使いやすいです。

jQuery:FancyBoxを使用し、Lightboxのように表示する

FancyBox1.3.4を使用した時の使い方をメモします。

FancyBoxLightboxのように表示するjQueryプラグインです。
下記のリンクよりダウンロードできます。

FancyBox


FancyBoxの使い方

共通で読み込むファイル

FancyBoxのスタイルシート、FancyBoxのJSファイル、jQueryなどの
ファイル等を読み込みます。

<link rel="stylesheet" type="text/css" href="/fancybox/jquery.fancybox-1.3.4.css" media="screen" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="/fancybox/jquery.fancybox-1.3.4.pack.js"></script>

※マウスホイールイベントを使用する場合は下記も読み込みます。

<script type="text/javascript" src="/fancybox/jquery.mousewheel-3.0.4.pack.js"></script>

○デフォルトの場合(オプションなし)

jQuery

<script type="text/javascript">
    $(document).ready(function() {
        $(".fancybox1").fancybox();
    });
</script>

HTML

<a class="fancybox1" href="./img/sample_b.jpg"><img alt="sample" src="./img/sample_s.jpg" /></a>

表示するものにタイトルを表示させる場合は、「title=””」に記載します。

<a class="fancybox1" href="./img/sample_b.jpg" title="タイトル"><img alt="sample" src="./img/sample_s.jpg" /></a>

○グループ化させる場合

「rel=””」にグループ化をする対象の物に同じ値を付けます。

jQuery

<script type="text/javascript">
    $(document).ready(function() {
        $(".fancybox2").fancybox({
            'cyclic'        : true
        });
    });
</script>

HTML

<a class="fancybox2" rel="group" href="./img/sample1_b.jpg" title=""><img alt="" src="./img/sample1_s.jpg" /></a>
<a class="fancybox2" rel="group" href="./img/sample2_b.jpg" title=""><img alt="" src="./img/sample2_s.jpg" /></a>
<a class="fancybox2" rel="group" href="./img/sample3_b.jpg" title=""><img alt="" src="./img/sample3_s.jpg" /></a>
<a class="fancybox2" rel="group" href="./img/sample4_b.jpg" title=""><img alt="" src="./img/sample4_s.jpg" /></a>

上記以外にもFancyBoxのエフェクトや背景、透過などのオプションが色々あるので、
サイトに合わせてカスタマイズできると思います。

また、「FancyBox1.3.4」は「jQuery1.9」で動作しなかったので「jQuery1.8」を使用しました。


jQuery:ラジオ選択時にセレクトボックスを制御する

HTMLでフォームを作成していると入力した値によって入力項目の切り替えなどをしたい場合があります。
jQueryでラジオボタン選択時にセレクトボックスなどのフォームを有効・無効にする方法を記載します。


■ 使用例

【jQuery】

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    // 初期状態のセレクトボックスをdisabledに設定する
    $("select#specList").attr("disabled", "disabled");

    // 「全体」をクリックされた場合
    $("#all").click(function(){
        // セレクトボックスをdisabledに設定する
        $('select#specList').attr("disabled", "disabled");
    });    

    // 「指定」をクリックされた場合
    $("#spec").click(function(){
        // セレクトボックスのdisabledを外す
        $('select#specList').removeAttr("disabled");
    });    
});
</script>

【HTML】

<label for="all"><input type="radio" name="radio" id="all">全体</label>
<label for="spec"><input type="radio" name="radio" id="spec">指定</label>

<select id="specList">
    <option value="100">ID:100</option>
    <option value="200">ID:200</option>
    <option value="300">ID:300</option>
</select>

■ サンプル

「指定」を選択しているときのみ、セレクトボックスが選択可能になっています。



ID:100ID:200ID:300