2015年5月22日金曜日

(jQueryの学習)エフェクト:アニメーション(第三回)
「アニメーション」の3回目です。

今回もanimateメソッドのサンプルの紹介ですが、
前回よりももう少し難易度を上げたいと思います。

●animateメソッドのサンプル(応用)


7.複数のエフェクトを直列に動かす

直列に動かすためには、
最初のエフェクトが『終わったら』次を実行するようにします。
今回は「complete」の引数を利用して実現しています。
  $("#animate7-Target1").animate(
    {marginLeft: "+=100"},
    1000,
    "swing",
    function() {
      $("#animate7-Target2").animate(
        {marginLeft: "+=100"},
        1000,
        "linear"
      );
    }
  );
swing
linear

8.複数のエフェクトを並列に動かす

並列に動かすためには、動かしたいエフェクトを続けて書くだけです。
  $("#animate8-Target1").animate({marginLeft: "+=100"}, 1000, "swing");
  $("#animate8-Target2").animate({marginLeft: "+=100"}, 1000, "linear");
swing
linear

9.エフェクトをループさせる

ループさせるためには、
jQueryではなくJavaScriptの「setTimeout(mozillaのAPIリファレンスはこちら)」を使います。
今回の例では『3秒間に左から右に丸いオブジェクトを延々と移動』させてます。
$(function() {
  // (1)実行ボタン押下で「setTimeout」を起動(JavaScriptの関数を実行)
  $("#animate9-Trigger input[type=button]").click(function(){
    setTimeout("loopAnimate()");
  });
});
function loopAnimate() {
  // (2)animateでオブジェクトを移動(左⇒右・・・移動が完了したら左へ戻す)
  $("#animate9-Target").animate({marginLeft: "350px"}, 3000)
                        .animate({marginLeft: "-100px"}, 0)
  // (3)もう一度「setTimeout」を起動(後は(2)~(3)の繰り返し)
  setTimeout("loopAnimate()", 3000);
}
loop

いかがでしたか?

調べてみると、
もっと複雑なアニメーションもできるようです。
近いうちに挑戦したいですね。

それでは、また。

2015年5月20日水曜日

(jQueryの学習)エフェクト:アニメーション(第二回)
「アニメーション」の2回目です。

1回目はアニメーションの説明から、animateメソッドの解説まででした。

今回はanimateメソッドのサンプルを紹介したいと思います。
まずは基本的なものから・・・。

●animateメソッドのサンプル(基本)


1.大小を変える


duration: 500ms 1000ms 1500ms
easing: swing linear
ここでは文字の大小を変化させているの「font-size」のプロパティを指定しました。
単純に変化させるのであればパーセントで指定する方が簡単です。
細かく指定する場合は「px」や「em」で指定します。
また、図やオブジェクトを変化させる場合は「height」や「width」で調整できます。
  $("#animate1-Target").animate({fontSize: "150%"});
あいうえお

2.左右に動かす


duration: 500ms 1000ms 1500ms
easing: swing linear
div属性で定義したオブジェクトを動かすには「margin-left」のプロパティを使います。
右へ動かすには「+」、左へ動かすには「-」で指定します。
なお、上下に動かすには「margin-top」を使用します。
  $("#animate1-Target").animate({marginLeft: "+=75px"});
かきくけこ

3.濃淡を変える


duration: 500ms 1000ms 1500ms
easing: swing linear
「opacity」によって濃淡を変えます。
opacityは「0.0(淡)~1.0(濃)」の範囲で指定可能です。
通常で見える状態は「1.0」。対して、一番淡い(何も見えない)状態は「0.0」です。
また、opacityに「"toggle"」と指定することで、下から徐々に消えるようになります。
  $("#animate1-Target").animate({opacity: "0.5"});
さしすせそ

4.エフェクトが完了する時間を変える

完了時間を操作するには「duration」の引数を使います。
描画効果は他の描画サンプルにて確認できますので、
durationのラジオボタンを変えながら変化を感じてください。
  $("#animate4-Target").animate({fontSize: "150%"},1500);

5.エフェクトの動きを変える

エフェクトの動きを操作するには「easing」の引数を使います。
標準では「swing」と「linear」が用意されています。
描画効果は他の描画サンプルにて確認できますので、
easingのラジオボタンを変えながら変化を感じてください。
  $("#animate5-Target").animate({fontSize: "150%"},1500,"swing");

6.エフェクト完了後にアラートを出す


duration: 500ms 1000ms 1500ms
easing: swing linear
エフェクト完了時にアラートを出すには、「complete」の引数を使います。
この引数には完了時に動かしたい任意の関数(function() { })が指定できます。
今回のサンプルでは、
 ・アラートを出すための「alert関数」の実行
 ・アラート確認後、移動したオブジェクトを元に戻す処理
を行っています。
  $("#animate6-Target").animate(
    // properties
    {marginLeft: "+=100px", marginTop: "+=100px"},
    // duration
    1000,
    // easing
    "swing",
    // complete
    function() {
      alert("Complete!!");
      $("#animate6-Target").animate({marginLeft: "-=100px", marginTop: "-=100px"},0);
    }
  );

いかがでしたか?

次回は応用として、
もう少しだけ難しいアニメーションに挑戦したいと思います。

それでは、また。

2015年5月18日月曜日

(jQueryの学習)エフェクト:アニメーション(第一回)
今回は「アニメーション」を学びます。

アニメーションとはどんなものか?

例えば、文字を・・・
・大きくしたり、小さくしたり
・右に動かしたり、左に動かしたり
・薄くしたり、濃くしたり
・・・のようなことを、
Webページ上に独自の描画効果を表示することです。

Windows98が全盛だったときに、
JavaScriptで同じようなコードを書いたことがありますが、
ものすごいコード量だった記憶があります。

これをjQueryを使うことで、
どの程度シンプルにできるのか?(期待を込めて)も学んでみたいと思います。

◆主な用途

こんなときやこんなものに使えます。

●利用したいシーン
1.Webサイト(特にリッチサイト)を着飾りたいとき
2.Webサイトにトリックを埋め込みたいとき

●利用したいコンテンツ
1.入力(入力後、次のアンケート項目をストレス無く表示させる)
2.背景(雪を降らせるなど)

上記に限らず、使い手次第で様々な用途に使えます。


◆主な方法

●アニメーションの方法
アニメーションの方法はいくつかあるようです。
1.animateメソッド
2.toggle系メソッドを駆使する
3.CSS3を使う

3.のCSS3は、まだどんなものかわかっていないので、今後の課題とします。
頑張れば2.の「toggle系メソッド」でも実現できると思いますが、
今の段階ではあまりにも難題のため、今回は「animateメソッド」に特化して学びたいと思います。


●animateメソッドの引数
引数を見ることで、animateメソッドにどんな用途があるのかが見えてきます。

引数には
1.properties
2.[任意]duration
3.[任意]easing
4.[任意]complete
があります。

1.properties
アニメーションによって、どのようなデザインに変化させたいのか?を指定します。
具体的には、width、opacity、borderLeftWidth、fontSizeのようなstyle属性を変化させる情報を指定します。
※注意事項として、各項目IDはキャメルケースで表記する必要があります。
 (例:border-left-width ⇒ borderLeftWidth)

2.[任意]duration
アニメーションの動作期間を指定します。

『"slow"、"normal"、"fast"のいずれかの文字列』、または、『ミリ秒単位の数値』を指定します。

"slow"などの文字列を指定した時の秒数は以下の通りです。
文字列ミリ秒
slow600
normal400
fast200

durationに「2000」を指定すると、2秒間かけてアニメーションを完了させます。

なお、未指定時のデフォルト値は「400」です。

3.[任意]easing
値の変化量を調節するときに指定します。
アニメーションの変化に抑揚をつけたいときに指定すると説明すればわかりやすいでしょうか。

標準では"swing"と"linear"が用意されており、
2つの違いを以下に記します。
指定値変化量
例:10秒で0⇒10cmになる場合
linear単調な変化
例:毎秒1㎝ずつ大きくなる
swing緩急のある変化
例:最初と最後の2秒は1㎝しか変わらないが、途中の6秒間の変化が大きい

</table>

上のように書きましたが、
実際に動かしてみると、
左から右に一直線上に動くような変化で比較しないと、
どちらも似たようなものに思えます。
(私がこのようなアニメーションの分野に疎いということもあるのかも知れませんが)

ただし、独自関数を指定することで、
「最初だけ早く」したり、「最後だけ早く」したり、
「起伏のある変化をする」など、独自の描画効果を得ることもできるようになっています。

なお、未指定時のデフォルト値は「"swing"」です。

4.[任意]complete
最後の引数は、アニメーション終了時に実行する関数を指定できます。
例えば・・・アラート出力、CSS制御(フォントを変えるなど)、HTML制御(文言出力など)ができます。


次回、animateメソッドのサンプルを紹介したいと思います。
それでは、また。

2015年5月14日木曜日

(jQueryの学習)エフェクト:特定エリアの開閉(toggle系以外のメソッド)
今回も「特定エリアの開閉」を学びます。

前回学んだ方法は
 1.toggleメソッド
 2.slideToggleメソッド
 3.fadeToggleメソッド
です。

これに対して、
今回は
 4.showメソッド と hideメソッド の組合せ
 5.slideDownメソッド と slideUpメソッド の組合せ
 6.fadeInメソッド と fadeOutメソッド の組合せ
について学びます。

◆開閉方法の違い

4.show-hideメソッドのサンプル

slow normal fast
描画効果:「対角線方向(閉:右下から左上 開:左上から右下)」で表示・非表示を制御する

<<<開いたり、閉じたりする領域(開始)>>>

    x = $("#showHide-Target");
    if (x.is(":hidden")) {
      x.show("slow");
    } else {
      x.hide("slow");
    }
  

<<<開いたり、閉じたりする領域(終了)>>>


5.slideUp-slideDownメソッドのサンプル

slow normal fast
描画効果:「垂直方向(閉:下から上 開:上から下)」で表示・非表示を制御する

<<<開いたり、閉じたりする領域(開始)>>>

    x = $("#slideUpDown-Target");
    if (x.is(":hidden")) {
      x.slideDown("slow");
    } else {
      x.slideUp("slow");
    }
  

<<<開いたり、閉じたりする領域(終了)>>>


6.fadeIn-fadeOutメソッドのサンプル

slow normal fast
描画効果:「指定エリア全面」で表示・非表示を制御する(徐々に消えたり、出たりする)

<<<開いたり、閉じたりする領域(開始)>>>

    x = $("#fadeInOut-Target");
    if (x.is(":hidden")) {
      x.fadeIn("slow");
    } else {
      x.fadeOut("slow");
    }
  

<<<開いたり、閉じたりする領域(終了)>>>



●ここまでで気づいたこと・・・

・前回のtoggle系メソッドと描画効果を類似している
・toggle系メソッドの方がコード量が少ない

描画効果の違いについて、
わかりやすくするため、似ているもの同士を左右に並べてみました。

◆開閉方法ごとの比較

大きく3つの描画効果に分けてみました。
効果toggle系toggle系以外
show/hide

1.toggleメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

4.show-hideメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

slide

2.slideToggleメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

5.slideUp-slideDownメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

fade

3.fadeToggleメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

6.fadeIn-fadeOutメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>



このようにして比較してみると、違いは無いように見えます。

実はちょっと違うのかな?とあれこれいじってみましたが、大差無し。


・・・なんてことはない・・・。

jQueryの本家サイト(http://api.jquery.com/)で調べてみたところ、
toggle系のメソッドは、
2本のメソッド(例:toggle VS show⇔hide)を対に呼び出すことと同等と書いてありました。
⇒http://api.jquery.com/toggle/ ("Examples:"の手前辺り)

だったら、コード量の少ない「toggle系メソッド」しか使わなくて良いかも知れませんね。

違いとしては、
使用するjQueryのバージョンによっては使えないところ(↓)なので、
ver1.4以降なら「toggle系メソッド」一択で良さそうです。

●バージョンによる違い

・toggle系以外のメソッド:ver1.0~
・toggle系メソッド   :ver1.4~


jQueryのバージョンの違いで大きく出るのは「1.x系」か「2.x系」か?を選択するときで、
しかも、「1.x系」は2015年5月現在で「ver1.11」まで上がっているので、
よほどのこと(バージョンアップにより廃止された機能が必要など)が無い限りは
「toggle系メソッド」を選択して問題ありませんね。

それでは、また。

2015年5月13日水曜日

(jQueryの学習)エフェクト:特定エリアの開閉(toggle系メソッド)
今回は「特定エリアの開閉」を学びます。

「特定エリアの開閉」とはどういうことかというと、
読んで字の如く、『ある領域を開いたり、閉じたりすること』です。

Microsoft Excelのような表計算ソフトの「グループ化」を連想すれば、大体イメージ通りかと思います。
ただ、表計算ソフトの「グループ化」は、
『行全体』だったり、『列全体』だったりするので、厳密に見ると全く違うものだけど。。。

◆主な用途

こんなときやこんなものに使えます。

●利用したいシーン
 1.普段は隠しておいて、必要なときだけ表示したいシーン
 2.逆に不要なときに、閉じて非表示にしたいシーン

●利用したいコンテンツ
 1.メニューやリスト
 2.長文の説明書き

上記に限らず、使い手次第で様々な用途に使えます。

◆主な方法

開閉する方法はいくつか存在するので、わかる範囲で列挙します。

●開閉方法の種類
 1.toggleメソッド
 2.slideToggleメソッド
 3.fadeToggleメソッド
 4.showメソッド と hideメソッド の組合せ
 5.slideDownメソッド と slideUpメソッド の組合せ
 6.fadeInメソッド と fadeOutメソッド の組合せ

ざっと上げると、この6つのいずれかの方法で実現できる。

◆開閉方法の違い

それぞれ描画効果が異なります。
また、各メソッドに渡す引数を切り替えることで、
描画スピードもコントロールすることができます。
※今回は「"slow" or "normal" or "fast"」の文字列を渡していますが、
 ミリ秒単位で指定することも可能です。(例:1500・・・1.5秒)

言葉だけではイメージし辛いと思うのでサンプルを・・・

1.toggleメソッドのサンプル

slow normal fast
描画効果:「対角線方向(閉:右下から左上 開:左上から右下)」で表示・非表示を制御する
<<<開いたり、閉じたりする領域(開始)>>>
    $("#toggle-Target").toggle("slow");
  
<<<開いたり、閉じたりする領域(終了)>>>

2.slideToggleメソッドのサンプル

slow normal fast
描画効果:「垂直方向(閉:下から上 開:上から下)」で表示・非表示を制御する
<<<開いたり、閉じたりする領域(開始)>>>
    $("#slideToggle-Target").slideToggle("slow");
  
<<<開いたり、閉じたりする領域(終了)>>>

3.fadeToggleメソッドのサンプル

slow normal fast
描画効果:「指定エリア全面」で表示・非表示を制御する(徐々に消えたり、出たりする)
<<<開いたり、閉じたりする領域(開始)>>>
    $("#fadeToggle-Target").fadeToggle("slow");
  
<<<開いたり、閉じたりする領域(終了)>>>



こんなところですね。
次回は「4.showメソッド と hideメソッド の組合せ」から。

それでは、この辺で。