Webページ上のテキストや画像などの要素を点滅させるには、
古いものでは<blink>タグだったり、CSSでの「text-decoration:blink;」などがあったりしますが
タグ自体が廃止タグだったり、ブラウザが対応していなかったりであまり使い物になりません。

そこで、テキストや画像などのコンテンツ要素を
jQueryで簡単に点滅させる方法について自分用メモ程度に紹介してみます。

jQueryで点滅

jQueryでの点滅はいろいろやり方がありますが
シンプルな方法として、対象物に対してfadeInとfadeOutを続けて指定することで
簡単に実現することができます。

例として、画像<img>タグを点滅させる場合のスクリプトは以下のようになります。
※今回は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(){
	$('img').fadeOut(500,function(){$(this).fadeIn(500)});
});
</script>

この記述の場合、
画像が0.5秒かけて消え、0.5秒かけて再表示されるので
1秒間で1回点滅することになります。

ここで指定している「500」の数値の値を変更させることで
点滅スピードを調整することも可能です。

これを実行させると以下のように。

画像が一回だけ点滅します。

これを使って点滅を無限に繰り返す際には
setIntervalを使って以下のように記述します。

◆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(){
	setInterval(function(){
		$('img').fadeOut(500,function(){$(this).fadeIn(500)});
	},1000);
});
</script>

これを実行させると以下のように。

画像がずっと点滅し続けます。

ちょっと応用して、複数の要素に対して
タイミングをずらして点滅させるようにするには以下のように。

◆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(){
	setTimeout(function(){$('img#item1').fadeOut(500,function(){$(this).fadeIn(500)});},0);
	setTimeout(function(){$('img#item2').fadeOut(500,function(){$(this).fadeIn(500)});},500);
	setTimeout(function(){$('img#item3').fadeOut(500,function(){$(this).fadeIn(500)});},1000);
	setTimeout(function(){$('img#item4').fadeOut(500,function(){$(this).fadeIn(500)});},1500);
	setTimeout(function(){$('img#item5').fadeOut(500,function(){$(this).fadeIn(500)});},2000);

	setInterval(function(){
		setTimeout(function(){$('img#item1').fadeOut(500,function(){$(this).fadeIn(500)});},0);
		setTimeout(function(){$('img#item2').fadeOut(500,function(){$(this).fadeIn(500)});},500);
		setTimeout(function(){$('img#item3').fadeOut(500,function(){$(this).fadeIn(500)});},1000);
		setTimeout(function(){$('img#item4').fadeOut(500,function(){$(this).fadeIn(500)});},1500);
		setTimeout(function(){$('img#item5').fadeOut(500,function(){$(this).fadeIn(500)});},2000);
	},2500);
});
</script>

これを実行させると以下のように。

jQueryを使って点滅させることで
点滅させるタイミングやスピードなども細かく調整できるようになるので
ページ内の目立たせたい要素などに対して、有効に使えるようになるかと思います。

Webページ内の要素を点滅させたいときに是非。。。

サンプルファイルをダウンロードしたい方はこちらから

SHARE

Comments (7)

  • jQueryで要素を点滅させる方法 | programming design | 2012.04.29 23:01

    […] これからも使っていくと思います♪ jQueryでコンテンツ要素を点滅させる方法 | BlackFlag参考にさせていただきました。わかりやすいです。 […]

  • Mika | 2012.10.17 16:45

    いつもタメになる記事を書いていただいて有難うございます。
    記事の通りにやってみたら、見本通りにできたのですが、

    このj-Query で点滅させた写真のフェードアウト時の透過を50%で止めたいのですが、
    どの部分に” fadeTo ”で指定すると宜しいのでしょうか?

    初めてのメールで問い合わせてしまい申し訳ございません。。。

  • BlackFlag | 2012.10.18 0:01

    >Mikaさん

    コメントありがとうございます。

    この点滅スクリプトをご活用いただいているようで
    嬉しく思っております。

    ご質問いただきましたフェードアウト時の透過の調整についてですが
    当記事で紹介しているスクリプト内の「fadeIn」と「fadeOut」と記載してある部分を
    下記のように書き換えることで実現可能かと思います。

    ———————————————————————————–
    $(‘img’).fadeTo(‘500’,0.5,function(){$(this).fadeTo(‘500’,1)});
    ———————————————————————————–

    「500」の数字のところがフェードにかかる時間で
    そのとなり「0.5(1)」の数字のところが透過率になります。

    お試しください。
    よろしくお願いします。

  •    | 2014.04.16 14:51

    有益な情報感謝感謝です!
    例がとってもわかりやすくて良いです
    ありがとうございました。(´;ω;`)

  • BlackFlag | 2014.04.18 0:43

    > 名無しさん
    コメントありがとうございます。
    この点滅スクリプトがお役に立ったようで
    嬉しく思っております。

    他にも色々とスクリプトを紹介させていただいておりますので
    あれこれ試していただけると幸いです。

    よろしくお願いします。

  • トレログ管理人 | 2014.11.16 0:00

    トレーニングライフログ「トレログ」というのを運営しているものです。

    トレーニングをajaxで記録しているときに、「記録中・・・」という文言を点滅表示させるのに参考にさせていただきました。

    このような方法があるのですね、勉強になります!

    本当に助かりました!ありがとうございました!

  • BlackFlag | 2014.11.16 11:51

    >トレログ管理人さん
    コメントありがとうございます。
    当記事の点滅スクリプトがその様なサービスを制作する上で
    お役に立ったようでとても嬉しく思っております。

    当ブログでは他にもあれこれスクリプトを紹介させていただいておりますので
    何かの参考にしていただけると幸いです。

    よろしくお願いします。







コメント内容

※コメントにHTMLタグを直接入力しないでください。
※HTMLタグを入力する際はタグ一つ一つの括弧「<」「>」を全角に変換して入力してください。

コメントは承認制になっているのですぐには反映されません。コメント頂いた内容については出来る限り早めの対応を心掛けていますが、時期によって返答が遅くなってしまうことがありますので、何卒ご了承ください。
» コメントについてのご注意  |  » ライセンスに関して