しばらく時間があいてしまいましたが、「animate()」とかいじってみました。
使い方はやっぱりとっても簡単で
もちろん、高さや座標などを複数設定することもできます。
ページの中にいくつか画像を配置して、
読み込まれた画像からフェードインしてくるようなサンプル作りました。
デモサンプル
そんでもって「load()」を使ってイメージが読み込み終わったタイミングで
「animate()」を実行させるようにました。
ところがこれだけだと、Windows の IE では、別のページにいってから戻ってくると、
なぜか画像に対する「load()」のイベントが発生しないのです...。
ただ「window」の「load()」は発生するようなので、後半に下のソースを書いて無様にエスケープ。
もう少し試してみまする。
使い方はやっぱりとっても簡単で
- $(〜).animate({
- CSSプロパティ:設定値
- }, スピード, 終了時の処理);
- $(#square).animate({
- opacity:0
- }, 500);
もちろん、高さや座標などを複数設定することもできます。
ページの中にいくつか画像を配置して、
読み込まれた画像からフェードインしてくるようなサンプル作りました。
デモサンプル
- $("li img").css({opacity:0}).load(function(){
- $(this).animate({
- opacity:1
- }, 500);
- });
そんでもって「load()」を使ってイメージが読み込み終わったタイミングで
「animate()」を実行させるようにました。
ところがこれだけだと、Windows の IE では、別のページにいってから戻ってくると、
なぜか画像に対する「load()」のイベントが発生しないのです...。
ただ「window」の「load()」は発生するようなので、後半に下のソースを書いて無様にエスケープ。
- $(window).load(function(){
- if($("li img").css("opacity")==0){
- $("li img").stop().css({opacity:1});
- }
- });
もう少し試してみまする。
jQuery UI 1.5 がリリースされてたみたいなのでメモ。
(jQuery 自体のバージョンは 1.2.6)
簡単に色んなことができちゃう模様。
勉強するにはなるべく使わない方がいいのかなあ。
(jQuery 自体のバージョンは 1.2.6)
簡単に色んなことができちゃう模様。
勉強するにはなるべく使わない方がいいのかなあ。
今回は jQuery の「:even」フィルタを使ってみました。いったい何なのかよくわかってなかったのですが、結局こういうことみたいです。
デモサンプル
スタイルシートに
なるほどー。
シマシマのテーブルとか、コメントなどのボックスを1人分ずつシマシマにするとか、そういうのに使うのかな?
デモサンプル
- $(function(){
- $("li:even").addClass("eachList");
- });
スタイルシートに
- li.eachList {
- background: #EEE;
- }
なるほどー。
シマシマのテーブルとか、コメントなどのボックスを1人分ずつシマシマにするとか、そういうのに使うのかな?
普段仕事でも使いそうなものということで、今回はロールオーバーイメージにしてみました。
ボタンなどの画像上にマウスが重なると、ボタンの画像が入れ替わるってやつです。よくスタイルシートで Background イメージをずらすという方法も見かけますが、最近は Javascript でいいんじゃないかって気がしてます。Javascript がオフのときは普通のボタンになるだけだし、コーディングも楽だし。(笑)
みなさんがどんな風にやっているのかちょっと見て回った結果、こんな感じにしてみました。
以下 Javascript 部分
入れ替える画像は、拡張子の前に「_over」と付けて用意します。
(例えば、通常の画像名が「img01.gif」だったら、ロールオーバー用として「img01_over.gif」を同じ階層に用意しておきます)
デモサンプル
一応 Javascript の方の説明。
2〜8行目
「class="rollover"」の<img>タグに対する処理(ループ)
3行目
<img>タグの「src」属性を取り出す
4行目
「imgPass」から拡張子を取り出す
5行目
ロールオーバー用にプレロード(先読み)しておきたいファイルパスを作る
6行目
Image オブジェクトを作ってプレロード(先読み)
7行目
ロールオーバーで入れ替えたいファイル(プレロードしたファイル)のパスを、<img>タグに「oversrc」属性として保存しておく
9〜16行目
「class="rollover"」の<img>タグの「ロールオーバー」「ロールアウト」イベントの設定
11行目
さっき保存しておいた「oversrc」属性を使って画像入れ替え
もっといい方法があるよ、なんていうのがありましたらぜひぜひ教えてくださいませー。
ボタンなどの画像上にマウスが重なると、ボタンの画像が入れ替わるってやつです。よくスタイルシートで Background イメージをずらすという方法も見かけますが、最近は Javascript でいいんじゃないかって気がしてます。Javascript がオフのときは普通のボタンになるだけだし、コーディングも楽だし。(笑)
みなさんがどんな風にやっているのかちょっと見て回った結果、こんな感じにしてみました。
以下 Javascript 部分
- $(function(){
- $.each($("img.rollover"), function(){
- var imgPass = $(this).attr("src");
- var imgType = imgPass.substring(imgPass.lastIndexOf('.'), imgPass.length);
- var loadImgPass = imgPass.replace(imgType, '_over' + imgType);
- new Image().src = loadImgPass;
- $(this).attr({oversrc:loadImgPass});
- });
- $("img.rollover").hover(
- function(){
- $(this).attr({src:$(this).attr("oversrc")});
- },
- function(){
- $(this).attr({src:$(this).attr("src").replace("_over","")});
- }
- );
- });
- <img src="images/img01.gif" alt="IMAGE01" class="rollover" />
入れ替える画像は、拡張子の前に「_over」と付けて用意します。
(例えば、通常の画像名が「img01.gif」だったら、ロールオーバー用として「img01_over.gif」を同じ階層に用意しておきます)
デモサンプル
一応 Javascript の方の説明。
2〜8行目
「class="rollover"」の<img>タグに対する処理(ループ)
3行目
<img>タグの「src」属性を取り出す
4行目
「imgPass」から拡張子を取り出す
5行目
ロールオーバー用にプレロード(先読み)しておきたいファイルパスを作る
6行目
Image オブジェクトを作ってプレロード(先読み)
7行目
ロールオーバーで入れ替えたいファイル(プレロードしたファイル)のパスを、<img>タグに「oversrc」属性として保存しておく
9〜16行目
「class="rollover"」の<img>タグの「ロールオーバー」「ロールアウト」イベントの設定
11行目
さっき保存しておいた「oversrc」属性を使って画像入れ替え
もっといい方法があるよ、なんていうのがありましたらぜひぜひ教えてくださいませー。
jQueryのセレクタのメモです。
- :first
最初の要素 - :last
最後の要素 - :not(selector)
selectorにマッチするすべての要素以外 - :even
偶数番目のindex番号の要素(indexは0から) - :odd
奇数番目のindex番号の要素(indexは0から) - :eq(index)
index番号の要素(indexは0から) - :gt(index)
index番号を超える要素(indexは0から) - :lt(index)
index番号未満の要素(indexは0から) - :header
header要素(h1, h2, h3など)の見出し要素 - :animated
アニメーション動作中の要素
jQuery を使いながら実用的(?)なものも作ってみようかと思います。とりあえず今回は、『<a>タグのリンク先が外部だった場合に「target="〜"」を使わずに別ウィンドウを開く』っていうものを作ってみました。
xhtml や html で Strict な DOCTYPE を使っていると、<a>タグに「target="〜"」は使えませんので、そういう時に別ウィンドウを開かせたい場合の実験です。
で、まず考えたのが、<a>タグに「class="external"」など適当な class 名を付けて、その<a>タグの「href="〜"」の URL の内容を参照して「window.open」すればいいんじゃないのかなって思いました。こんな感じ。
あれ、なんかとっても簡単。
と思ったのですが、これって余計な class を付けなきゃいけないし、勉強なのでもうちょっと考えようってことで、できたのがこれ。
和訳(笑)すると、
デモサンプル
xhtml や html で Strict な DOCTYPE を使っていると、<a>タグに「target="〜"」は使えませんので、そういう時に別ウィンドウを開かせたい場合の実験です。
で、まず考えたのが、<a>タグに「class="external"」など適当な class 名を付けて、その<a>タグの「href="〜"」の URL の内容を参照して「window.open」すればいいんじゃないのかなって思いました。こんな感じ。
- $(function(){
- $("a.external").click(function(){
- window.open($(this).attr("href"));
- return false; //元のウィンドウもリンク先に移動してしまうのを防ぐ
- })
- });
あれ、なんかとっても簡単。
と思ったのですが、これって余計な class を付けなきゃいけないし、勉強なのでもうちょっと考えようってことで、できたのがこれ。
- $(function(){
- $("a[@href^='http://'],a[@href^='https://']").attr({target:"_blank"});
- });
和訳(笑)すると、
- 文書の準備ができたときに、「http://」と「https://」から始まるすべての<a>タグに「target="_blank"」を追加する
デモサンプル
ちょこっとメモ。
初期化
$()関数をバシバシ使っていろいろできちゃう模様。
以下よく使いそうなものとか。
全ての<p>タグ
全ての<p>タグと<a>タグ
クラス名が「lead」の全ての<p>タグ
<a>タグが入ってる、クラスが「lead」の<p>タグ
name="email"の全ての<input>タグ
クラス名が「lead」の<p>タグの中身を「Hello!!」にする
ID が「memo」の<p>タグのスタイルを変える
クラス名が「lead」の<p>タグがクリックされた時のイベント
さらにメソッド・チェーンを使って、ひとつのセレクタで複数のメソッドを呼ぶことができる。
いろいろ命令しても1行で書けちゃうって寸法。ひええ。
例えば、、、
<h3>タグを作って、ID を「memo」にして、padding を 1em・バックグラウンドを黒・文字を白・フォントサイズを 20px にして、中身に「Hello!」って書いて、ID が「content」の<div>タグの中に追加して、そんでもって一回見えなくしてから、ゆっくりフェイドインさせたのちゆっくりフェイドアウト。(笑)
初期化
- $(document).onready( function(){
- //初期化とか関数の設定とか
- })
$()関数をバシバシ使っていろいろできちゃう模様。
以下よく使いそうなものとか。
全ての<p>タグ
- $("p")
全ての<p>タグと<a>タグ
- $("p,a")
クラス名が「lead」の全ての<p>タグ
- $("p.lead")
<a>タグが入ってる、クラスが「lead」の<p>タグ
- $("p.lead[a]")
name="email"の全ての<input>タグ
- $("input[@name=email]")
クラス名が「lead」の<p>タグの中身を「Hello!!」にする
- $("p.lead").html("Hello!!");
ID が「memo」の<p>タグのスタイルを変える
- $("p#memo").css("color","#C00");
クラス名が「lead」の<p>タグがクリックされた時のイベント
- $("p.lead").click(function(){
- //クリックされたときにすること
- })
さらにメソッド・チェーンを使って、ひとつのセレクタで複数のメソッドを呼ぶことができる。
いろいろ命令しても1行で書けちゃうって寸法。ひええ。
例えば、、、
<h3>タグを作って、ID を「memo」にして、padding を 1em・バックグラウンドを黒・文字を白・フォントサイズを 20px にして、中身に「Hello!」って書いて、ID が「content」の<div>タグの中に追加して、そんでもって一回見えなくしてから、ゆっくりフェイドインさせたのちゆっくりフェイドアウト。(笑)
- $("<h3></h3>").attr({id:"memo"}).css({padding:"1em",background:"#000",color:"#FFF",fontSize:"20px"}).html("Hello!!").appendTo("div#content").hide().fadeIn("slow",function(){$(this).fadeOut("slow")});
さっそく「jQuery」からファイルをダウンロードして触ってみました。バージョンはいろいろあるようですね。まあここは最新版でしょ、ってことで「jQuery 1.2.6」を手に入れてきました。
ダウンロード出来るファイルは以下の3種類です。
といってもこれだけではなんともならないので、このへんとかこのへんとかこのへんを参考にさせて頂きながら勉強してこうかと思っています。
ちょっと読んでみたところ、とっても簡単に DOM をいじったり Ajax を使ったりできるみたいですね。素敵です。
有名な Javascript ライブラリ「prototype.js」と違うところは、まずファイルサイズが軽いってことと(prototype.js は約120k)、アニメーションやらフェードやらが初めから実装されているとこみたいです。
で、読んでるうちに気になったものを発見したので、さっそくサンプル(サンプルとも呼べない程度ですが...)を作ってみました。
普通のJavascript のイベントで「window.onload()」っていうのがあるんですけど、これは html が全部読み込まれたときに発生するもので、設定を初期化したり命令を作ったりするときに使ったりします(たぶん...)。でもこれ、画像ファイルも全部読み込んでからじゃないと発生しないイベントなので、重たい画像などがあるとそいつを全部読み込むまで何にもできなかったのです。
そこで、jQuery のすごくいいものを発見。
べ、便利だ...。
ちなみに
そして何度でも書いていいみたいです。
デモサンプル
ダウンロード出来るファイルは以下の3種類です。
- Minified and Gzipped
改行などを削除して、ファイルサイズをコンパクトにしたもの。これをダウンロード。56k しかないのでお手軽です。 - Uncompressed
普通に書かれたもの。読み解いて勉強する人にはいいかも。もちろん僕は素通りです。(笑) - Packed
圧縮してる呪文のような文字。ファイルサイズは一番軽いようです。でも実行前にもとの状態に戻すので処理的にはちょっと遅いみたいですね。
といってもこれだけではなんともならないので、このへんとかこのへんとかこのへんを参考にさせて頂きながら勉強してこうかと思っています。
ちょっと読んでみたところ、とっても簡単に DOM をいじったり Ajax を使ったりできるみたいですね。素敵です。
有名な Javascript ライブラリ「prototype.js」と違うところは、まずファイルサイズが軽いってことと(prototype.js は約120k)、アニメーションやらフェードやらが初めから実装されているとこみたいです。
で、読んでるうちに気になったものを発見したので、さっそくサンプル(サンプルとも呼べない程度ですが...)を作ってみました。
普通のJavascript のイベントで「window.onload()」っていうのがあるんですけど、これは html が全部読み込まれたときに発生するもので、設定を初期化したり命令を作ったりするときに使ったりします(たぶん...)。でもこれ、画像ファイルも全部読み込んでからじゃないと発生しないイベントなので、重たい画像などがあるとそいつを全部読み込むまで何にもできなかったのです。
そこで、jQuery のすごくいいものを発見。
$(document).ready()ってことは、例えば、
DOMがロードされて操作・解析が可能になったタイミングで関数を実行します。
- $(document).ready(function(){
- alert("DOMの準備ができましたよ!");
- })
べ、便利だ...。
ちなみに
- $(function(){
- alert("DOMの準備ができましたよ!");
- })
そして何度でも書いていいみたいです。
デモサンプル
いままで Javascript といえば、ウェブの制作の仕事をしながら、時どき DOM を使ったり、ちょっとしたライブラリをサンプルごと使ったりくらいのちょっとしたニセモノ風な感じでした。そんなニセモノ風からちょっとでも抜け出して、自由に Javascript を使えるようになりたいなあと勉強ブログを立ち上げてみたのです。
といいつつ、どこから手をつけていいのやらさっぱりで...。とりあえず、今さらっぽくもありますが「jQuery」あたりのライブラリを使って、実用的なものを作ったりしながら、そしてきっと悩んだりしながら、少しずつでも Javascript を習得していければと思っています。
トライ&エラーの連続できっとお恥ずかしいところもお見せしちゃいそうです。
どうぞ大きな心と優しい眼差しで受け止めてやってください。
サイト名は某優良素敵サービスとここへのオマージュ(パクリ)ということで1秒で決定。(笑)
ではでは、どうぞよろしくです。
といいつつ、どこから手をつけていいのやらさっぱりで...。とりあえず、今さらっぽくもありますが「jQuery」あたりのライブラリを使って、実用的なものを作ったりしながら、そしてきっと悩んだりしながら、少しずつでも Javascript を習得していければと思っています。
トライ&エラーの連続できっとお恥ずかしいところもお見せしちゃいそうです。
どうぞ大きな心と優しい眼差しで受け止めてやってください。
サイト名は某優良素敵サービスとここへのオマージュ(パクリ)ということで1秒で決定。(笑)
ではでは、どうぞよろしくです。