<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web Mugen</title>
	<atom:link href="http://web-mugen.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://web-mugen.com</link>
	<description></description>
	<lastBuildDate>Wed, 03 Apr 2013 02:12:28 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>表示コンテンツの切り替えも出来るシンプルなモーダルウィンドウを実現するjQueryのスクリプト</title>
		<link>http://web-mugen.com/javascript/jquerysimplemodalwindow/</link>
		<comments>http://web-mugen.com/javascript/jquerysimplemodalwindow/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 16:51:54 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[モーダルウィンドウ]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=1171</guid>
		<description><![CDATA[シンプルなモーダルウィンドウを制作しました。有名なモーダルウィンドウに比べらたら出来ないことだらけです。画像をグループ化して他の画像へ移動することや、img内のtitleからキャプションを生成、他のHTMLを読み込んでの [...]]]></description>
				<content:encoded><![CDATA[<p>シンプルなモーダルウィンドウを制作しました。有名なモーダルウィンドウに比べらたら出来ないことだらけです。画像をグループ化して他の画像へ移動することや、<code>img</code>内の<code>title</code>からキャプションを生成、他のHTMLを読み込んでの表示等もできません。その変わり<em>3つのメリット</em>があります。</p>
<ol>
<li><strong>軽い</strong>こと。JSファイルにすると<b>3K以下の軽さ</b>であり、<b>画像を必要とせずCSSも普通に記述して20行程</b>の導入のしやすさ。つまり気軽さ。</li>
<li><strong>シンプル</strong>なこと。見飽きた有名なモーダルウィンドウのインターフェイスに比べて<b>何というシンプルさ</b>、そう<b>閉じるボタン</b>を取り払うほどに。（※<b>閉じるボタン</b>が無くても、グレーバックをクリックすると閉じるコトを認識している人が増えていると、勝手に判断した為です。<b>あとがき</b>でこの事についてチョット書いていますので、興味があれば読んでみて下さい。）</li>
<li><strong>表示コンテンツの切り替え</strong>ができること。コレが本命。<b>とっても気軽にモーダルウィンドウ内で表示コンテンツを切り替えることができます</b>。まあいつもの如く、どこかにあるんでしょうけど、見つけられなかったので制作してみたパターンです。</li>
</ol>
<p>っとまあ、無理やり<em>3つのメリット</em>をこじつけてみました。まあ興味を示した方はどうぞご覧下さいませ。</p>
<p class="demo"><a href="/demo/jquery_simple-modal-window/">Demo</a></p>
<p><span id="more-1171"></span></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
</ul>
</section>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari</li>
<li>Firefox</li>
<li>Internet Explorer7～</li>
<li>Opera</li>
</ul>
<p class="annotation">※Windowsのみの確認です。また、Internet Explorer以外は記事投稿時の最新版を対象にした確認です。</p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p>必要に合わせて以下<b>1</b>、<b>2</b>いずれかの様に記述。</p>
<section>
<h3>1.画像の表示</h3>
<p>モーダルウィンドウを立ち上げる<code>a</code>要素に<code>class="modal"</code>を設定し、<code>href</code>に表示させる画像（以下の場合は<em>sample_l.gif</em>）を設定する。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;&lt;a class=&quot;modal&quot; href=&quot;sample_l.gif&quot;&gt;&lt;img src=&quot;sample.gif&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</pre>
</div>
</section>
<section>
<h3>2.ページ内要素の表示</h3>
<p>モーダルウィンドウを立ち上げる<code>a</code>要素に<code>class="modal"</code>を設定し、<code>href</code>に表示させるページ内要素の<code>id</code>を（以下の場合は<code>#sample1</code>）を設定する。</p>
<p>また、モーダルウィンドウを閉じる要素に<code>class="modal-close"</code>を設定する。</p>
<p>あと、モーダルウィンドウを立ち上げたまま表示するページ内要素を変更するには、<code>a</code>要素に<code>class="modal-move"</code>を設定し、<code>href</code>に表示させるページ内要素の<code>id</code>を（以下の場合は<code>#sample1</code>、<code>#sample2</code>）を設定する。</p>
<p>モーダルウィンドウ表示用のページ内要素（以下の場合は<code>#sample1</code>、<code>#sample2</code>）はCSSの設定で<code>display:none;</code>にして非表示にしておく。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;&lt;a class=&quot;modal&quot; href=&quot;#sample1&quot;&gt;テキスト&lt;/a&gt;&lt;/p&gt;

&lt;!-- CSSで非表示に設定 --&gt;

&lt;div id=&quot;sample1&quot;&gt;
	&lt;p&gt;モーダルウィンドウ表示用のページ内要素1&lt;/p&gt;
	&lt;p&gt;&lt;a class=&quot;modal-move&quot; href=&quot;#sample2&quot;&gt;次のコンテンツへ&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;&lt;a class=&quot;modal-close&quot; href=&quot;#&quot;&gt;閉じる&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div id=&quot;sample2&quot;&gt;
	&lt;p&gt;モーダルウィンドウ表示用のページ内要素2&lt;/p&gt;
	&lt;p&gt;&lt;a class=&quot;modal-move&quot; href=&quot;#sample1&quot;&gt;前のコンテンツへ&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;&lt;a class=&quot;modal-close&quot; href=&quot;#&quot;&gt;閉じる&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;!-- //CSSで非表示に設定 --&gt;
</pre>
</div>
</section>
</section>
<section>
<h3>CSS</h3>
<p>以下のCSSを記述。さり気なく<code>box-shadow</code>使っているので微妙にIEでは表示が違います。</p>
<p>あと以下には記述していませんが、DEMOでは<code>border-radius</code>とか使って遊んでます。見て分かると思いますが、簡単な記述なので気軽にカスタム出来ると思います。</p>
<div class="code">
<pre class="brush: css; title: ; notranslate">
#modal-win {
	width: 100%;
	position: absolute;
}
#modal-win-inner {
	box-shadow: 0 0 5px rgba(0, 0, 0, .25);
	margin: 0 auto;
	position: relative;
	z-index: 101;
}
#modal-bg {
	width: 100%;
	height: 100%;
	background-color: #000000;
	position: fixed;
	top: 0;
	left: 0;
	z-index: 100;
	cursor: pointer;
}
</pre>
</div>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。9行目でアニメーション速度を変更できます。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
(function($){

	$(function(){
		simpleModalWindow();
	});

	function simpleModalWindow(){

		var sp = 500;	//アニメーション速度
		var win = $(window);
		var body = $('body');
		var bg = $('&lt;div id=&quot;modal-bg&quot;&gt;&lt;/div&gt;');
		bg.css('opacity', '0');

		//モーダルウィンドウ表示クリックイベント
		$(document).on('click', '.modal', function(){
			var py = win.scrollTop();
			var wh = win.height();
			var self = $(this);
			var link = self.attr('href');
			var check = link.match(/^#.+/);
			var mWin = $('&lt;div id=&quot;modal-win&quot;&gt;&lt;div id=&quot;modal-win-inner&quot;&gt;&lt;/div&gt;&lt;/div&gt;');
			var mInner = mWin.find('#modal-win-inner');
			mInner.css('opacity', '0');
			body.append(mWin);
			mWin.prepend(bg);
			if(!check){
				mInner.append('&lt;img src=&quot;' + link + '&quot; alt=&quot;&quot; /&gt;');
				var img = mWin.find('img');
				img.on('load', function(){
					view(img);
				});
			}
			else {
				var contents = $(link);
				mInner.append(contents);
				contents.css({display: 'block', zIndex: '101'});
				view(contents);
			}
			function view(a_elm){
				var w = a_elm.outerWidth();
				var h = a_elm.outerHeight();
				var mt = (wh - h) / 2 + py;
				bg.animate({opacity: '.75'}, sp);
				mWin.css('top', mt + 'px');
				mInner.css({width: w, height: h}).animate({opacity: '1'}, sp);
			}
			return false;
		});

		//モーダルウィンドウ内要素変更クリックイベント
		$(document).on('click', '.modal-move', function(){
			var py = win.scrollTop();
			var wh = win.height();
			var self = $(this);
			var link = self.attr('href');
			var check = link.match(/^#.+/i);
			var mWin = $('#modal-win');
			var mInner = mWin.find('#modal-win-inner');
			if(check){
				mInner.animate({opacity: '0'}, sp, function(){
					var nowContents = $(this).children();
					body.append(nowContents);
					nowContents.hide();
					var contents = $(link);
					mInner.append(contents);
					contents.css({display: 'block', zIndex: '101'});
					var w = contents.outerWidth();
					var h = contents.outerHeight();
					var mt = (wh - h) / 2 + py;
					bg.animate({opacity: '.75'}, sp);
					mWin.css('top', mt + 'px');
					mInner.css({width: w, height: h}).animate({opacity: '1'}, sp);
				});
			}
			return false;
		});

		//モーダルウィンドウクローズクリックイベント
		$(document).on('click', '#modal-bg, .modal-close', function(){
			var mWin = $('#modal-win');
			var mInner = mWin.find('#modal-win-inner');
			var contents = mInner.children();
			mInner.animate({opacity: '0'}, sp, function(){
				if(contents.attr(&quot;id&quot;)){
					body.append(contents);
					contents.hide();
				}
				mWin.remove();
			});
			bg.animate({opacity: '0'}, sp);
			return false;
		});

	}

})(jQuery);
</pre>
</div>
<p class="annotation"><ins datetime="2012-05-31T04:19:40+09:00">※2012/5/31 表示コンテンツを2重に囲わないといけない場合がある為、もっとシンプルにHTMLを記述できると思い、上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2012-05-14T04:14:05+09:00">※2012/5/14 ページ内要素の表示に<code>clone()</code>を使っていた為、<b>id</b>の重複等による不具合が出る可能性がありましたので、上記スクリプトを修正しました。</ins></p>
</section>
</section>
<section>
<h2>あとがき</h2>
<p>はじめの方で書いたモーダルウィンドウの<b>閉じるボタン</b>を取り払った理由についてもう少し詳しく、そして自己中心的考えで3つにまとめて書きます。</p>
<ol>
<li>上記にあるように、<b>グレーバックをクリックすると閉じるコトを認識している人が増えている</b>と思った為。思った理由は各々考えてくれ。</li>
<li><b>閉じるボタン小さい</b>。<b>グレーバック大きい</b>。以上。</li>
<li><b>人類の進化とインターフェイスの簡略化</b>。2つ目の示す通り<b>圧倒的に押しやすく使いやすいのはグレーバックのクリック</b>だと思う。なぜ閉じるボタンが用意されているのだろうか？それは分かりやすさ、つまりユーザビリティを高める為だろう。だが、押しやすさとういう点ではグレーバックの方がユーザビリティが高いと言える。だから両方用意する。ということだろう。しかし、<b>閉じるボタンを用意することで、圧倒的押しやすさを持つグレーバックに気づかないユーザーもいる</b>かも知れない。そこで、あえてユーザーに小さな壁、つまり閉じるボタンが無い状態を乗り越えさせるのである。その壁を乗り越えることは恐らく容易いことだろう。つまりその壁を乗り越えるコトこそが人類の進化である。多くの人々が進化することで、インターフェイスの簡略化につながる。この場合は<em>グレーバック＝閉じるボタン</em>の認識を人類に植えつけることだ。そしてそうなった人類にとって<b>簡略化されたインターフェイスはより直感的なモノとなり、今以上に分かりやすく使いやすいモノ</b>となるだろう。</li>
</ol>
<p>っとまあ、特に3つ目ですが妄想ワールド全開で<b>閉じるボタン</b>を取り払った理由をこじつけて参りましたが、今回はココまでにします。ではまた次回の記事で。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/javascript/jquerysimplemodalwindow/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>単純だけど簡単な背景画像のパララックスを実現するjQueryのスクリプト</title>
		<link>http://web-mugen.com/javascript/jquerybgparallax/</link>
		<comments>http://web-mugen.com/javascript/jquerybgparallax/#respond</comments>
		<pubDate>Sat, 07 Apr 2012 14:08:43 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[スクロール]]></category>
		<category><![CDATA[パララックス]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=1142</guid>
		<description><![CDATA[スクロールで背景画像がズレるやつを制作しました。パララックスとか言うやつですね。まあコンテンツごとの背景がズレるだけなので、視差と呼べるかは微妙ですけれど、他のをみるとそう呼んでもいい感じですね。 とりあえず今回のウリは [...]]]></description>
				<content:encoded><![CDATA[<p>スクロールで背景画像がズレるやつを制作しました。パララックスとか言うやつですね。まあコンテンツごとの背景がズレるだけなので、視差と呼べるかは微妙ですけれど、他のをみるとそう呼んでもいい感じですね。</p>
<p>とりあえず今回のウリはタイトル通り単純だけど簡単ってところです。パララックスする要素をまとめて指定するだけでOK。あとは動きの量を調整したければする位です。まあ、大したモノではありませんし、もう新しいって程でもありませんが、チョット試してみようかなって思ってる方にはイイかもしれません。</p>
<p class="demo"><a href="/demo/jquery_bg-parallax/">Demo</a></p>
<p><span id="more-1142"></span></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
</ul>
</section>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari</li>
<li>Firefox</li>
<li>Internet Explorer7～</li>
<li>Opera</li>
</ul>
<p class="annotation">※Windowsのみの確認です。また、Internet Explorer以外は記事投稿時の最新版を対象にした確認です。</p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p>コンテンツ（以下の例だと<code>#box1</code>、<code>#box2</code>）はいくつでも問題ありません。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;wrap&quot;&gt;
	&lt;div id=&quot;box1&quot;&gt;
		&lt;div class=&quot;inner&quot;&gt;コンテンツ1&lt;/div&gt;
	&lt;/div&gt;
	&lt;div id=&quot;box2&quot;&gt;
		&lt;div class=&quot;inner&quot;&gt;コンテンツ2&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
</div>
</section>
<section>
<h3>CSS</h3>
<p>以下のCSSを記述。<code>z-index</code>の値は下のコンテンツになるほど増やす。</p>
<div class="code">
<pre class="brush: css; title: ; notranslate">
#wrap &gt; div {
	min-width: 960px;
	background: no-repeat 50% 0 fixed;
	margin: 0 auto;
	position: relative;
}
#wrap #box1 {
	height: 1200px;
	background-image: url(sample1.jpg);
	z-index: 1;
}
#wrap #box2 {
	height: 1000px;
	background-image: url(sample2.jpg);
	z-index: 2;
}
#wrap .inner {
	width: 800px;
	margin: 0 auto;
}
</pre>
</div>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。10、11行目をHTMLや仕様に合わせて変更。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
(function($){

	$(function(){
		parallax();
	});

	function parallax(){

		//変数設定
		var elm = $(&quot;#wrap&quot;).find(&quot;&gt; div&quot;); //背景を動かす要素
		var sp = 5; //数値が小さいほど視差が大きくなる
		var win = $(window);

		//配列作成
		pos = [];
		os = [];
		osNextCheck = [];
		osNext = [];
		h = [];
		posArray = [];
		posY = [];

		//配列設定
		elm.each(function(i){
			var self = $(this);
			pos[i] = self.css(&quot;background-position&quot;);
			os[i] = self.offset().top;
			osNextCheck[i] = self.next().size();
			if(osNextCheck[i] != 0){
				osNext[i] = self.next().offset().top;
			}
			else{
				h[i] = self.height();
				osNext[i] = os[i] + h[i];
			}
			if(pos[i]){
				var posArraySet = pos[i].split(&quot; &quot;);
				posArray[i] = new Array(posArraySet[0], posArraySet[1]);
				posY[i] = posArray[i][1].replace(&quot;px&quot;, &quot;&quot;);
			}
			else{
				posY[i] = elm.css(&quot;background-position-y&quot;).replace(&quot;px&quot;, &quot;&quot;);
			}
		});

		//スクロールイベント
		win.scroll(function(){
			var y = $(this).scrollTop();
			var winH = win.height();
			elm.each(function(i){
				var self = $(this);
				if(pos[i]){
					if(y &gt; os[i] - winH &amp;&amp; y &lt; osNext[i]){
						self.css(&quot;background-position&quot;, posArray[i][0] + parseInt(-y / sp + os[i] / sp) + &quot;px&quot;);
					}
				}
				else{
					self.css(&quot;background-position-y&quot;, parseInt(-y / sp + os[i] / sp) + &quot;px&quot;);
				}
			});
		});

	}

})(jQuery);
</pre>
</div>
</section>
</section>
<section>
<h2>注意点</h2>
<p>ウィンドウサイズにより背景画像の表示範囲がある程度変わりますので、視差の量やコンテンツの高さで調整して下さい。</p>
</section>
<section>
<h2>あとがき</h2>
<p>今回は仕事でたまたま制作したものが、そのままでも公開できそうで、内容も悪くなかなと思って記事にしました。相も変わらず自分の書いたコードの悪いところがわかりません。まあ動作しているからとりあえずはイイんですけれど。あぁ師匠が欲しい。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/javascript/jquerybgparallax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>『Goodara』公開しました。</title>
		<link>http://web-mugen.com/other/goodaraopen/</link>
		<comments>http://web-mugen.com/other/goodaraopen/#respond</comments>
		<pubDate>Fri, 01 Apr 2011 14:08:14 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Goodara]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=1064</guid>
		<description><![CDATA[前に働いていた会社の人となんかWebを中心に面白い事しようよってことで組んだ集団が『Goodara』だ。結成は2010年8月。その中にデザイナーがイナイという苦境をのりこえ2011年1月ついにロゴができた。 『ぐ～だら』 [...]]]></description>
				<content:encoded><![CDATA[<p>前に働いていた会社の人となんかWebを中心に面白い事しようよってことで組んだ集団が『Goodara』だ。結成は2010年8月。その中にデザイナーがイナイという苦境をのりこえ2011年1月ついにロゴができた。</p>
<p class="img"><img src="/wordpress/wp-content/uploads/2011/04/other_goodaraopen_logo.png" width="378" height="101" alt="Goodara&nbsp;ロゴ"></p>
<p>『ぐ～だら』と読む。意味は説明するのがメンドクサイので各自考えてくれ。</p>
<p><span id="more-1064"></span></p>
<p>ロゴとくれば次はサイトだ。2011年1月時点でデザイナーはまだ仲間になっていない。5ヶ月程かけてロゴを作った私たちとしてはあまりにも荷が重い。しかし、いないものは仕方がない。とりあえず今の職場でも一緒に働いているマークアップエンジニアの<a href="http://twitter.com/#!/otot76">@otot76</a>と共に、同じくマークアップエンジニア（自称）の自分とで構成・デザイン・コーディングを進めることにした。構成は2人でフワッと考え、デザインは自分を中心にドーンと作って、コーディングは<a href="http://twitter.com/#!/otot76">@otot76</a>を中心にガガガーッと組んだ。とりあえずなんとなくそこはかとなく公開できる形にした。だから公開した。2011年4月1日に。</p>
<p class="img"><a href="http://goodara.com/"><img src="/wordpress/wp-content/uploads/2011/04/other_goodaraopen_top.jpg" width="540" height="437" alt="Goodara&nbsp;トップページ"></a><br />
<a href="http://goodara.com/">http://goodara.com/</a></p>
<p>ご覧になると分かると思うが、コンテンツと呼べるものが殆どないし、今後何をするのかも分からない。そう、自分たちでもだ！</p>
<p>どうしよう・・・まぁ、エエかぁ。楽しかったし。Chrome、Safari、Firefoxの最新版だけしか対応してないからかもしれないが。</p>
<p>まぁ、こんな感じでテキトーにdaradaraやっていきます。そんなわけでヨロシクです。</p>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/other/goodaraopen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canvasで実現するカラフルな円が小さくなったり大きくなったりする背景2</title>
		<link>http://web-mugen.com/canvas/bgcolorfulroundsizeanime2/</link>
		<comments>http://web-mugen.com/canvas/bgcolorfulroundsizeanime2/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 08:53:14 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[Canvas]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[カラフル]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=1048</guid>
		<description><![CDATA[以前作ったCanvasで実現するカラフルな円が小さくなったり大きくなったりする背景の別バージョンを作ってみました。ソースを改良しようと思い作りましたが、ついでなのでちょっと違ったヤツをと思いまして。 動きとしての大きな変 [...]]]></description>
				<content:encoded><![CDATA[<p>以前作った<a href="/canvas/bgcolorfulroundsizeanime/">Canvasで実現するカラフルな円が小さくなったり大きくなったりする背景</a>の別バージョンを作ってみました。ソースを改良しようと思い作りましたが、ついでなのでちょっと違ったヤツをと思いまして。</p>
<p>動きとしての大きな変更点は軌跡を残してポワってさせたのと、イージングを数学関数でちゃんとしたもの？にしました。あとソースを改良した割にはこれといって軽くなった訳ではありませんのであしからず。（いやね、本当は軽くするつもりだったんだよ。でもね、僕の力じゃこれがゴニョゴニョ。）</p>
<p class="demo"><a href="/demo/bg-colorful-round-size-anime_2/">Demo</a></p>
<p><span id="more-1048"></span></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
</ul>
</section>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari3~</li>
<li>Firefox2~</li>
<li>Opera11</li>
</ul>
<p class="annotation">※Windowsのみの確認です。</p>
<p>IE7、8はアニメーションせずに1回のみ描写するようにしています。何故かって？尋常じゃないくらい重いからに決まってるでしょ。</p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p><code>body</code>の直下に背景の要素（Canvas）とコンテンツの要素を用意する。以下の場合は<code>#canvasbg</code>と<code>#contents</code>になる。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;body&gt;
	&lt;div id=&quot;canvasbg&quot;&gt;
		&lt;canvas id=&quot;canvas&quot;&gt;&lt;/canvas&gt;
	&lt;/div&gt;
	&lt;div id=&quot;contents&quot;&gt;
		&lt;p&gt;テキストテキストテキストテキストテキスト&lt;/P&gt;
	&lt;/div&gt;
&lt;/body&gt;
</pre>
</div>
</section>
<section>
<h3>CSS</h3>
<p>以下のCSSは基本的にCanvasを背景にする為の設定です。ただし、JavaScriptも使用して対応している為、下記CSSのみではCanvasを背景に出来ません。</p>
<div class="code">
<pre class="brush: css; title: ; notranslate">
html {
	height: 100%;
}
body {
	min-height: 100%;
	background-color: #000000;
	overflow: auto;
	position:relative;
	z-index: 1;
}
#canvasbg {
	height: auto;
	width: 100%;
	height:100%;
	min-height:100%;
	overflow: auto;
	position: fixed;
	z-index: 1;
}
#canvasbg canvas {
	position: fixed;
	z-index: 1;
}
#contents {
	width: 600px;
	background-color: rgba(0,0,0,0.7);
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin: 20px auto;
	position: relative;
	z-index: 2;
}
#contents p {
	color: #ffffff;
}
</pre>
</div>
<p class="annotation"><ins datetime="2012-04-07T02:53:28+09:00">※2012/4/7 コンテンツの高さがブラウザの表示領域より小さい場合に背景が切れていましたので、上記CSSを修正しました。</ins></p>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
(function($){

	$(function(){

		//変数宣言
		var canvasElm = $(&quot;#canvas&quot;);
		var canvasBg = $(&quot;#canvasbg&quot;);
		var alpha = 0.1;				//透明度
		var locArray = 100;				//位置の配列数
		var sizeArray = 100;			//サイズの配列数
		var colorArray = 600;			//カラーの配列数
		var speed = 50;					//アニメーション速度
		var colorLen = colorArray-2;
		var sizeLen = sizeArray-2;
		var locLen = locArray-2;
		var canvasWidth, canvasHeight;
		var ctx;
		var sizeNum = 0;
		var colorNum = 0;

		//配列作成
		randomLoc = [];
		randomSize = [];
		randomSizeInitial = [];
		randomColor = [];
		color = [];
		vector = [];

		//ランダム値作成関数
		function random(a_num, a_min){ //a_minは最小値、a_num+a_minは最大値
			return randomNum = Math.floor(Math.random()*a_num)+a_min;
		}

		//配列追加
		for(var i=0; i&lt;locArray; i++){
			randomLoc.push(random(50, 50));
		}
		for(var i=0; i&lt;sizeArray; i++){
			randomSize.push(random(70, 30));
		}
		for(var i=0; i&lt;colorArray; i++){
			randomColor.push(random(255, 0));
		}
		for(var i=0; i&lt;sizeArray; i++){
			vector.push(1);
		}
		for(var i=0, len=randomSize.length; i&lt;len; i++){
			randomSizeInitial[i] = randomSize[i];
		}

		//Canvasサイズ取得関数
		function canvasSize(){
			canvasElm.attr(&quot;width&quot;, canvasBg.width()).attr(&quot;height&quot;, canvasBg.height());
			canvasWidth = canvasElm.width();
			canvasHeight = canvasElm.height();
		}

		//canvas表示関数
		function init(){
			var canvas = document.getElementById(&quot;canvas&quot;);
			if (canvas.getContext){
				ctx = canvas.getContext(&quot;2d&quot;);
				if(jQuery.support.opacity){
					setInterval(draw, speed); //draw関数を繰り返す
				}
				else {
					draw();
				}
			}
		}

		//カラー取得関数
		function getColor(){
			for(var i=0; i&lt;3; i++){
				color[i] = randomColor[colorNum];
				colorNum++;
				if(colorNum&gt;colorLen){
					colorNum = 0;
				}
			}
			return &quot;rgba(&quot;+color[0]+&quot;,&quot;+color[1]+&quot;,&quot;+color[2]+&quot;,&quot;+alpha+&quot;)&quot;;
		}

		//サイズ取得関数
		function getSize(){
			if(sizeNum&gt;sizeLen){
				sizeNum = 0;
			}
			var size = randomSize[sizeNum];
			sizeNum++;
			return size;
		}

		//円表示コンストラクタ関数
		function Round(a_color, a_x, a_y, a_size){
			this.color = a_color;
			this.x = a_x;
			this.y = a_y;
			this.size = a_size;
		}

		//円表示メソッド
		Round.prototype.view = function(){
			ctx.fillStyle = this.color;
			ctx.beginPath();
			ctx.arc(this.x, this.y, this.size, 0, Math.PI*2, true);
			ctx.closePath();
			ctx.fill();
			locNum++;
			roundNum++;
		}

		//canvas表示内容関数
		function draw(){

			//Canvasに透明度のある背景色を重ねて徐々に消していく
			ctx.globalCompositeOperation = &quot;source-over&quot;;
			ctx.beginPath();
			ctx.fillStyle = &quot;rgba(0,0,0,0.1)&quot;;
			ctx.fillRect(0, 0, canvasWidth, canvasHeight);

			//円の重なり部分の描写を設定
			ctx.globalCompositeOperation = &quot;lighter&quot;;

			//変数初期化
			sizeNum = 0;
			colorNum = 0;
			locNum = 0;
			roundNum = 0;
			var locX = 0; 
			var locY = 0;

			//配列作成
			roundPool = [];

			//関数キャッシュ
			var f_getColor = getColor;
			var f_getSize = getSize;
			var f_Round = Round;

			//ランダムに円を作成
			for(var i=0, len=canvasHeight; i&lt;len; i+=loc){
				for(var j=0, len=canvasWidth; j&lt;len; j+=loc){
					var loc = randomLoc[locNum];
					if(locNum&gt;locLen){
						locNum = 0;
					}
					roundPool[roundNum] = new f_Round(f_getColor(), loc*locX, loc*locY, f_getSize());
					roundPool[roundNum].view();
					locX++;
				}
				locX = 0;
				locY++;
			}

			//サイズ配列の数値を変更（アニメーション設定）
			for(var i=0, len=sizeArray; i&lt;len; i++){
				var nowSize = randomSize[i]-1;
				var maxSize = randomSizeInitial[i];
				var easing = Math.floor(Math.pow(nowSize-(maxSize/2), 2)/(-Math.pow(maxSize, 2)/12)+4); //イージング設定
				if(nowSize&gt;maxSize-1 || nowSize&lt;2){ //サイズが0もしくは初期値になったら縮小拡大を反転する
					vector[i]*=-1;
				}
				randomSize[i]-=easing*=vector[i]; //次回描写の円のサイズを設定
			}

		}

		//Canvas表示
		$(window).bind(&quot;load&quot;,function(){
			canvasSize();
			init();
		})
		.bind(&quot;resize&quot;,function(){ //ウィンドウリサイズ時にCanvasのサイズを変更
			canvasSize();
		});

	});

})(jQuery);
</pre>
</div>
</section>
</section>
<section>
<h2>ちょこっと説明</h2>
<p>軌跡を残すには、Canvasを再描写する際に先程の描写を消すのではなく、透明度のある背景色を重ねていき徐々に消していくことで実現できます。</p>
</section>
<section>
<h2>あとがき</h2>
<p>イージングの数学関数を作るために8年ぶりくらいに2次関数を勉強しました。正直、正確な答えが出なかったので、取り敢えずJavaScriptに組み込んで勘で計算式を入れていくと・・・なんと奇跡的に出来ました。もう感無量です。</p>
<p>また数学関数を使わないといけない日（今回は別に必要に迫られた訳ではないけど）が来ることを考えて勉強すべきなだろうか数学を。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/canvas/bgcolorfulroundsizeanime2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>画像にクラス名を追加するだけでアニメーションロールオーバーできるjQueryのプラグイン</title>
		<link>http://web-mugen.com/javascript/jqueryimagerolloveranimeplugin/</link>
		<comments>http://web-mugen.com/javascript/jqueryimagerolloveranimeplugin/#respond</comments>
		<pubDate>Tue, 01 Mar 2011 05:06:28 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ロールオーバー]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=976</guid>
		<description><![CDATA[前に作った画像にクラス名を追加するだけでアニメーションロールオーバーできるjQueryのスクリプトをプラグイン化してみました。特に追加したアニメーションもありませんがね。単純に1つにまとめてアニメーションの変更等をしやす [...]]]></description>
				<content:encoded><![CDATA[<p>前に作った<a href="/javascript/jqueryimagerolloveranime/">画像にクラス名を追加するだけでアニメーションロールオーバーできるjQueryのスクリプト</a>をプラグイン化してみました。特に追加したアニメーションもありませんがね。単純に1つにまとめてアニメーションの変更等をしやすくしたくらいです。</p>
<p class="demo"><a href="/demo/jquery_image-rollover-anime_plugin/">Demo</a></p>
<p><span id="more-976"></span></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
</ul>
</section>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari4~</li>
<li>Firefox3~</li>
<li>Internet Explorer6~</li>
<li>Opera11</li>
</ul>
<p class="annotation">※Windowsのみの確認です。</p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p>ロールオーバーさせる要素の設定します。下記JavaScriptの設定だと<code>img</code>要素に<code>class="rollover"</code>です。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;img src=&quot;sample1.gif&quot; class=&quot;rollover&quot;&gt;
&lt;img src=&quot;sample2.gif&quot; class=&quot;rollover&quot;&gt;
&lt;img src=&quot;sample3.gif&quot; class=&quot;rollover&quot;&gt;
</pre>
</div>
</section>
<section>
<h3>画像ファイル名</h3>
<p>ロールオーバー用画像（形式はなんでもOK）を用意し、ロールオーバー前の画像ファイル名の最後にロールオーバー用の文字列（初期設定：<em>_ov</em>）を追加する。その画像をロールオーバー前の画像と同じフォルダに入れる。</p>
<p>（例）ロールオーバー前の画像が<em>sample.gif</em>なら<em>sample_ov.gif</em>というファイル名にする。</p>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。</p>
<p>5行目でスクリプトを実行しています。オプションは<a href="#option">下の方</a>で説明します。もちろん<code>class</code>別にアニメーションを複数設定することも可能です。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
(function($){

	//プラグイン実行
	$(function(){
		$(&quot;img.rollover&quot;).imgOvAnime(); //実行する要素を記述。オプションあり。
	});

	//プラグイン
	$.fn.imgOvAnime = function(option){

		var o = $.extend({
			ovStr: &quot;_ov&quot;,
			speed: 500,
			type: &quot;fade&quot;
		},option);
		var overElements = $(this);

		//フェード関数
		function fade(){
			var ovElm = overElements;
			var ovStr = o.ovStr;
			var speed = o.speed;
			ovElm.css({position:&quot;relative&quot;}).each(function(){
				var self = $(this);
				var url = self.attr(&quot;src&quot;).replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
				var ovImg = $(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,url).css({position: &quot;absolute&quot;});
				function anime(a_alp){
					self.stop().animate({opacity:a_alp},speed);
				}
				self.before(ovImg).hover(
				function(){
					anime(&quot;0&quot;);
				},
				function(){
					anime(&quot;1&quot;);
				});
			});
		}

		//スライドトップ関数
		function slideTop(){
			var ovElm = overElements;
			var ovStr = o.ovStr;
			var speed = o.speed;
			ovElm.css({position:&quot;relative&quot;,opacity:&quot;0&quot;}).each(function(){
				var self = $(this);
				var urlDef = self.attr(&quot;src&quot;);
				var urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
				var imgBack = $(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlDef).css({position:&quot;absolute&quot;});
				$(window).bind(&quot;load&quot;,function(){
					var w = self.width()+&quot;px&quot;;
					var h = self.height()+&quot;px&quot;;
					var ovImg = $(&quot;&lt;span&gt;&quot;).css({
						width: w,
						height: &quot;0&quot;,
						backgroundImage: &quot;url(&quot;+urlChange+&quot;)&quot;,
						position: &quot;absolute&quot;,
						fontSize: &quot;0&quot;
					});
					function anime(a_h){
						self.prev().stop().animate({height:a_h},speed);
					}
					self.before(imgBack).before(ovImg).hover(
					function(){
						anime(h);
					},
					function(){
						anime(&quot;0&quot;);
					});
				});
			});
		}

		//スライドレフト関数
		function slideLeft(){
			var ovElm = overElements;
			var ovStr = o.ovStr;
			var speed = o.speed;
			ovElm.css({position:&quot;relative&quot;,opacity:&quot;0&quot;}).each(function(){
				var self = $(this);
				var urlDef = self.attr(&quot;src&quot;);
				var urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
				var imgBack = $(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlDef).css({position:&quot;absolute&quot;});
				$(window).bind(&quot;load&quot;,function(){
					var w = self.width()+&quot;px&quot;;
					var h = self.height()+&quot;px&quot;;
					var ovImg = $(&quot;&lt;span&gt;&quot;).css({
						width: &quot;0&quot;,
						height: h,
						backgroundImage: &quot;url(&quot;+urlChange+&quot;)&quot;,
						position: &quot;absolute&quot;
					});
					function anime(a_w){
						self.prev().stop().animate({width:a_w},speed);
					}
					self.before(imgBack).before(ovImg).hover(
					function(){
						anime(w);
					},
					function(){
						anime(&quot;0&quot;);
					});
				});
			});
		}

		//フェードスライドトップ関数
		function fadeSlideTop(){
			var ovElm = overElements;
			var ovStr = o.ovStr;
			var speed = o.speed;
			ovElm.css({position:&quot;relative&quot;,opacity:&quot;0&quot;}).each(function(){
				var self = $(this);
				var urlDef = self.attr(&quot;src&quot;);
				var urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
				var imgBack = $(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlDef).css({position:&quot;absolute&quot;});
				$(window).bind(&quot;load&quot;,function(){
					var w = self.width()+&quot;px&quot;;
					var h = self.height()+&quot;px&quot;;
					var ovImg = $(&quot;&lt;span&gt;&quot;).css({
						width: w,
						height: &quot;0&quot;,
						backgroundImage: &quot;url(&quot;+urlChange+&quot;)&quot;,
						position: &quot;absolute&quot;,
						opacity: &quot;0&quot;,
						fontSize: &quot;0&quot;
					});
					function anime(a_h,a_alp){
						self.prev().stop().animate({height:a_h,opacity:a_alp},speed);
					}
					self.before(imgBack).before(ovImg).hover(
					function(){
						anime(h,&quot;1&quot;);
					},
					function(){
						anime(&quot;0&quot;,&quot;0&quot;);
					});
				});
			});
		}

		//スライドトップ2関数
		function slideTop2(){
			var ovElm = overElements;
			var ovStr = o.ovStr;
			var speed = o.speed;
			ovElm.css({position:&quot;relative&quot;,opacity:&quot;0&quot;}).each(function(){
				var self = $(this);
				var urlDef = self.attr(&quot;src&quot;);
				var urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
				$(window).bind(&quot;load&quot;,function(){
					var w = self.width()+&quot;px&quot;;
					var h = self.height()+&quot;px&quot;;
					var imgBack = $(&quot;&lt;span&gt;&quot;).css({
						width: w,
						height: h,
						backgroundImage: &quot;url(&quot;+urlDef+&quot;)&quot;,
						position: &quot;absolute&quot;,
						fontSize: &quot;0&quot;
					});
					var ovImg = $(&quot;&lt;span&gt;&quot;).css({
						width: w,
						height: &quot;0&quot;,
						backgroundImage: &quot;url(&quot;+urlChange+&quot;)&quot;,
						position: &quot;absolute&quot;,
						fontSize: &quot;0&quot;
					});
					function anime(a_h1,a_h2){
						var selfOvImg = self.prev();
						selfOvImg.animate({height: a_h1},speed);
						selfOvImg.prev().stop().animate({height: a_h2},speed);
					}
					self.before(imgBack).before(ovImg).hover(
					function(){
						anime(h,&quot;0&quot;);
					},
					function(){
						anime(&quot;0&quot;,h);
					});
				});
			});
		}

		//フェード拡大縮小関数
		function fadeSizing(){
			var ovElm = overElements;
			var ovStr = o.ovStr;
			var speed = o.speed;
			ovElm.css({position:&quot;relative&quot;,opacity:&quot;0&quot;}).each(function(){
				var self = $(this);
				var urlDef = self.attr(&quot;src&quot;);
				var urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
				$(window).bind(&quot;load&quot;,function(){
					var w = self.width()+&quot;px&quot;;
					var h = self.height()+&quot;px&quot;;
					var imgBack = $(&quot;&lt;span&gt;&quot;).css({
						width: w,
						height: h,
						backgroundImage: &quot;url(&quot;+urlDef+&quot;)&quot;,
						position: &quot;absolute&quot;,
						fontSize: &quot;0&quot;
					});
					var ovImg = $(&quot;&lt;span&gt;&quot;).css({
						width: &quot;0&quot;,
						height: &quot;0&quot;,
						backgroundImage: &quot;url(&quot;+urlChange+&quot;)&quot;,
						position: &quot;absolute&quot;,
						opacity: &quot;0&quot;,
						fontSize: &quot;0&quot;
					});
					function anime(a_w1,a_w2,a_h1,a_h2,a_alp1,a_alp2){
						var selfOvImg = self.prev();
						selfOvImg.stop().animate({width: a_w1,height: a_h1,opacity: a_alp1},speed);
						selfOvImg.prev().stop().animate({width: a_w2,height: a_h2,opacity: a_alp2},speed);
					}
					self.before(imgBack).before(ovImg).hover(
					function(){
						anime(w,&quot;0&quot;,h,&quot;0&quot;,&quot;1&quot;,&quot;0&quot;);
					},
					function(){
						anime(&quot;0&quot;,w,&quot;0&quot;,h,&quot;0&quot;,&quot;1&quot;);
					});
				});
			});
		}

		//アニメーションタイプ確認
		switch(o.type){
		case &quot;fade&quot;:
			fade();
			break;
		case &quot;slideTop&quot;:
			slideTop();
			break;
		case &quot;slideLeft&quot;:
			slideLeft();
			break;
		case &quot;fadeSlideTop&quot;:
			fadeSlideTop();
			break;
		case &quot;slideTop2&quot;:
			slideTop2();
			break;
		case &quot;fadeSizing&quot;:
			fadeSizing();
			break;
		}

	}

})(jQuery);
</pre>
</div>
</section>
<section id="option">
<h3>オプション</h3>
<dl>
<dt>ovStr&nbsp;（ロールオーバー用画像の追加文字列）</dt>
<dd>適当な文字列&nbsp;（初期設定：<em>_ov</em>）</dd>
<dt>speed&nbsp;（アニメーション速度）</dt>
<dd>適当な速度の数値&nbsp;1000＝1秒&nbsp;（初期設定：<em>500</em>）</dd>
<dt>type&nbsp;（アニメーションタイプ）</dt>
<dd><a href="/demo/jqueryimagerolloveranimeplugin/#fade">fade</a>、<a href="/demo/jqueryimagerolloveranimeplugin/#slide-top">slideTop</a>、<a href="/demo/jqueryimagerolloveranimeplugin/#slide-left">slideLeft</a>、<a href="/demo/jqueryimagerolloveranimeplugin/#fade-slide-top">fadeSlideTop</a>、<a href="/demo/jqueryimagerolloveranimeplugin/#slide-top-2">slideTop2</a>、<a href="/demo/jqueryimagerolloveranimeplugin/#fade-sizing">fadeSizing</a>&nbsp;（初期設定：<em>fade</em>）</dd>
</dl>
<section>
<h4>オプション設定例</h4>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(&quot;img.rollover&quot;).imgOvAnime({
	ovStr: &quot;_over&quot;,
	speed: 200,
	type: &quot;slideTop&quot;
}); 
</pre>
</div>
</section>
</section>
</section>
<section>
<h2>注意点</h2>
<p><code>img</code>要素に以下の<em>スタイル</em>を適用すると高確率でホバー画像の位置がずれます。まあ、あまり指定することもないと思うので問題ないかと。</p>
<dl>
<dt>type:&nbsp;&quot;fade&quot;&nbsp;の場合</dt>
<dd><code>float</code>、<code>positon</code></dd>
<dt>type:&nbsp;&quot;fade&quot;&nbsp;以外の場合</dt>
<dd><code>float</code>、<code>position</code>、<code>border</code>、<code>padding</code>、<code>margin</code></dd>
</dl>
</section>
<section>
<h2>あとがき</h2>
<p>本当はコンストラクタ関数でクラス的なことをして綺麗にソースをまとめたかったんですが、上手くいかなくて、自分の力ではほぼ全ての処理をアニメーションタイプ別に記述するのが精一杯でした。ホント長ったらしいソースだことで。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/javascript/jqueryimagerolloveranimeplugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS切替なしでフォントサイズを変更するjQueryのスクリプト</title>
		<link>http://web-mugen.com/javascript/jquerynochangecssfontsizechange/</link>
		<comments>http://web-mugen.com/javascript/jquerynochangecssfontsizechange/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 16:25:42 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[フォント]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=951</guid>
		<description><![CDATA[前に作ったフォントサイズを変更するjQueryのスクリプトの改良版です。元々はフォントサイズ切替用のスタイルシートを作るのがメンドイので作ってみました。改良点は画像でもテキストでも使えるし、クリックするとアクティブ用のク [...]]]></description>
				<content:encoded><![CDATA[<p>前に作った<a href="/javascript/jqueryfontsizechange/">フォントサイズを変更するjQueryのスクリプト</a>の改良版です。元々はフォントサイズ切替用のスタイルシートを作るのがメンドイので作ってみました。改良点は画像でもテキストでも使えるし、クリックするとアクティブ用のクラスが付くのでCSSを適応できます。さらにロールオーバー画像のオンオフも切り替えれます。おまけにフォントサイズの段階（標準・大とか小・中・大みたいな）もいくつでも設定できます。<del datetime="2011-02-22T10:29:34+00:00">ちなみにプラグイン風？に作りました。もちろん自己満の為です。</del></p>
<p class="demo">画像タイプ<a href="/demo/jquery_no-change-css-font-size-change/1.html">Demo</a></p>
<p class="demo">テキストタイプ<a href="/demo/jquery_no-change-css-font-size-change/2.html">Demo</a></p>
<p><span id="more-951"></span></p>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari4~</li>
<li>Firefox3~</li>
<li>Internet Explorer6~</li>
<li>Opera11</li>
</ul>
<ul class="annotation">
<li>※Windowsのみの確認です。</li>
<li>※IE6は<strong>テキストタイプ</strong>の場合、<code>a</code>要素を使用していない為ホバー機能が効きません。<code>a</code>要素を追加しても問題ないかと思いますが、リンクじゃないのに<code>a</code>要素を使うの嫌だった個人的に身勝手な考えの為です。（反論意見求む）</li>
</ul>
</section>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
<li><a href="https://github.com/carhartl/jquery-cookie/">jquery.cookie.js</a></li>
</ul>
<p class="annotation"><ins datetime="2012-04-07T01:46:44+09:00">※2012/4/7 <em>jquery.cookie.js</em>がダウンロード出来なくなっていましたので、リンク先を変更しました。</ins></p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p><code>head</code>要素内で<em>jquery.js</em>、<em>jquery.cookie.js</em>を読み込む。</p>
<p>ディレクトリは任意です。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;jquery.cookie.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p><code>body</code>要素内で以下の様に記述。</p>
<p><code>#changeArea</code>でフォントサイズを変更する範囲を囲む。フォントサイズ変更ボタンの記述位置は<code>#changeArea</code>の中でも外でもよい。</p>
<p>id名、class名、ボタンの数等は変更可。（合わせてJavaScriptの変更も必要）</p>
<section>
<h4>画像タイプ</h4>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;ul id=&quot;fontSize&quot;&gt;
	&lt;li&gt;&lt;img class=&quot;changeBtn&quot; src=&quot;sample-s.gif&quot; alt=&quot;小&quot;&gt;&lt;/li&gt;
	&lt;li&gt;&lt;img class=&quot;changeBtn&quot; src=&quot;sample-m.gif&quot; alt=&quot;中&quot;&gt;&lt;/li&gt;
	&lt;li&gt;&lt;img class=&quot;changeBtn&quot; src=&quot;sample-l.gif&quot; alt=&quot;大&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div id=&quot;changeArea&quot;&gt;
&lt;!-- ここからはフォントサイズが変更される --&gt;
	&lt;p&gt;テキストテキストテキストテキストテキスト&lt;/p&gt;
&lt;!-- ここまではフォントサイズが変更される --&gt;
&lt;/div&gt;
</pre>
</div>
</section>
<section>
<h4>テキストタイプ</h4>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;ul id=&quot;fontSize&quot;&gt;
	&lt;li class=&quot;changeBtn&quot;&gt;小&lt;/li&gt;
	&lt;li class=&quot;changeBtn&quot;&gt;中&lt;/li&gt;
	&lt;li class=&quot;changeBtn&quot;&gt;大&lt;/li&gt;
&lt;/ul&gt;

&lt;div id=&quot;changeArea&quot;&gt;
&lt;!-- ここからはフォントサイズが変更される --&gt;
	&lt;p&gt;テキストテキストテキストテキストテキスト&lt;/p&gt;
&lt;!-- ここまではフォントサイズが変更される --&gt;
&lt;/div&gt;
</pre>
</div>
</section>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。</p>
<p><del datetime="2011-02-22T10:29:34+09:00">4、10～15</del><ins datetime="2011-02-22T10:29:34+09:00">9～16</ins>行目をHTMLや仕様に合わせて変更。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
(function($){

	$(function(){
		fontsizeChange();
	});

	function fontsizeChange(){

		var changeArea = $(&quot;#changeArea&quot;);			//フォントサイズ変更エリア
		var btnArea = $(&quot;#fontSize&quot;);				//フォントサイズ変更ボタンエリア
		var changeBtn = btnArea.find(&quot;.changeBtn&quot;);	//フォントサイズ変更ボタン
		var fontSize = [100,116,131];				//フォントサイズ（HTMLと同じ並び順、幾つでもOK、単位は％）
		var ovStr = &quot;_ov&quot;;							//ロールオーバー画像ファイル末尾追加文字列（ロールオーバー画像を使用しない場合は値を空にする）
		var activeClass = &quot;active&quot;;					//フォントサイズ変更ボタンのアクティブ時のクラス名
		var defaultSize = 0;						//初期フォントサイズ設定（HTMLと同じ並び順で0から数値を設定）
		var cookieExpires = 7;						//クッキー保存期間
		var sizeLen = fontSize.length;
		var useImg = ovStr!=&quot;&quot; &amp;&amp; changeBtn.is(&quot;[src]&quot;);

		//現在クッキー確認関数
		function nowCookie(){
			return $.cookie(&quot;fontsize&quot;);
		}

		//画像切替関数
		function imgChange(elm1,elm2,str1,str2){
			elm1.attr(&quot;src&quot;,elm2.attr(&quot;src&quot;).replace(new RegExp(&quot;^(\.+)&quot;+str1+&quot;(\\.[a-z]+)$&quot;),&quot;$1&quot;+str2+&quot;$2&quot;));
		}

		//マウスアウト関数
		function mouseOut(){
			for(var i=0; i&lt;sizeLen; i++){
				if(nowCookie()!=fontSize[i]){
					imgChange(changeBtn.eq(i),changeBtn.eq(i),ovStr,&quot;&quot;);
				}
			}
		}

		//フォントサイズ設定関数
		function sizeChange(){
			changeArea.css({fontSize:nowCookie()+&quot;%&quot;});
		}

		//クッキー設定関数
		function cookieSet(index){
			$.cookie(&quot;fontsize&quot;,fontSize[index],{path:'/',expires:cookieExpires});
		}

		//初期表示
		if(nowCookie()){
			for(var i=0; i&lt;sizeLen; i++){
				if(nowCookie()==fontSize[i]){
					sizeChange();
					var elm = changeBtn.eq(i);
					if(useImg){
						imgChange(elm,elm,&quot;&quot;,ovStr);
					}
					elm.addClass(activeClass);
					break;
				}
			}
		}
		else {
			cookieSet(defaultSize);
			sizeChange();
			var elm = changeBtn.eq(defaultSize);
			if(useImg){
				imgChange(elm,elm,&quot;&quot;,ovStr);
				imgChange($(&quot;&lt;img&gt;&quot;),elm,&quot;&quot;,ovStr);
			}
			elm.addClass(activeClass);
		}

		//ホバーイベント（画像タイプ）
		if(useImg){
			changeBtn.each(function(i){
				var self = $(this);
				self.hover(
				function(){
					if(nowCookie()!=fontSize[i]){
						imgChange(self,self,&quot;&quot;,ovStr);
					}
				},
				function(){
					mouseOut();
				});
			});
		}

		//クリックイベント
		changeBtn.click(function(){
			var index = changeBtn.index(this);
			var self = $(this);
			cookieSet(index);
			sizeChange();
			if(useImg){
				mouseOut();
			}
			if(!self.hasClass(activeClass)){
				changeBtn.not(this).removeClass(activeClass);
				self.addClass(activeClass);
			}
		});

	}

})(jQuery);
</pre>
</div>
<p class="annotation"><ins datetime="2011-02-26T17:02:52+09:00">※2011/2/27 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2011-02-26T13:54:03+09:00">※2011/2/26 上記スクリプトの記述を変更しました。</ins></p>
</section>
<section>
<h3>その他</h3>
<p><strong>画像タイプ</strong>の場合は<code>li</code>内の画像のロールオーバー＆アクティブ用画像（形式はなんでもOK）を用意し、ロールオーバー前の画像ファイル名の最後にロールオーバー用文字列（初期設定<em>_ov</em>）を追加する。その画像をロールオーバー前の画像と同じフォルダに入れる。</p>
<p>（例）ロールオーバー前の画像が<em>sample.gif</em>なら<em>sample_ov.gif</em>というファイル名にする。</p>
</section>
</section>
<section>
<h2>あとがき</h2>
<p><del datetime="2011-02-22T10:29:34+00:00">今回は初のプラグイン風？に作ってみました。プラグイン作れるっていうと、なんかカッコイイなっていう勝手なイメージがありまして。でも結果的にプラグインとして堂々と配布するほどの自信がないので、プラグイン形式で作っているのにその意味を成していないような変なつくりになりました。でもまーコピペで使いやすいのでコレでいいかなとは思っていますがね。</del></p>
<p><ins datetime="2011-02-22T10:29:34+00:00">プラグイン風に作っていましたが、修正する際にあまりに意味がないと思いついでにプラグイン風をやめました。うん。こっちの方がいい気がする。</ins></p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/javascript/jquerynochangecssfontsizechange/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>画像にクラス名を追加するだけでアニメーションロールオーバーできるjQueryのスクリプト</title>
		<link>http://web-mugen.com/javascript/jqueryimagerolloveranime/</link>
		<comments>http://web-mugen.com/javascript/jqueryimagerolloveranime/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 02:46:03 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ロールオーバー]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=876</guid>
		<description><![CDATA[JavaScriptを使ったロールオーバーって大体imgにクラス名を追加するだけで出来るタイプが多いですよね。同じ感じでアニメーションロールオーバーも出来たらいいよね！って思って作りました。きっと同じ様に思っている人もた [...]]]></description>
				<content:encoded><![CDATA[<p>JavaScriptを使ったロールオーバーって大体<code>img</code>にクラス名を追加するだけで出来るタイプが多いですよね。同じ感じでアニメーションロールオーバーも出来たらいいよね！って思って作りました。きっと同じ様に思っている人もたくさんいるはずだし。。。まー、ソースも綺麗じゃないし、バグだってあるかもしませんが、きっと誰かが素敵に書き換えてくれるでしょう。既にあるかもですが・・・。</p>
<p class="demo"><a href="/demo/jquery_image-rollover-anime/">Demo</a></p>
<p><span id="more-876"></span></p>
<p class="annotation"><ins datetime="2011-03-01T05:07:32+09:00">※プラグイン化したものを公開していますのでよろしければ<a href="/javascript/jquery_image-rollover-anime-plugin/">画像にクラス名を追加するだけでアニメーションロールオーバーできるjQueryのプラグイン</a>をご覧下さい。</ins></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js（ver 1.4.3～）</a></li>
</ul>
</section>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari4~</li>
<li>Firefox3~</li>
<li>Internet Explorer6~</li>
<li>Opera11</li>
</ul>
<p class="annotation">※Windowsのみの確認です。</p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p>ロールオーバーさせる<code>img</code>に<code>class</code>を設定します。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;img src=&quot;sample1.gif&quot; class=&quot;rollover&quot;&gt;
&lt;img src=&quot;sample2.gif&quot; class=&quot;rollover&quot;&gt;
&lt;img src=&quot;sample3.gif&quot; class=&quot;rollover&quot;&gt;
</pre>
</div>
</section>
<section>
<h3>ファイル名</h3>
<p>ロールオーバー用画像（形式はなんでもOK）を用意し、ロールオーバー前の画像ファイル名の最後に<em>_ov</em>を追加する。その画像をロールオーバー前の画像と同じフォルダに入れる。</p>
<p>（例）ロールオーバー前の画像が<em>sample.gif</em>なら<em>sample_ov.gif</em>というファイル名にする。</p>
</section>
<section>
<h3>JavaScript</h3>
<p>アニメーションの種類により下記から選んで記述。</p>
<ol>
<li><a href="#list01">フェード</a></li>
<li><a href="#list02">上からスライド</a></li>
<li><a href="#list03">左からスライド</a></li>
<li><a href="#list04">フェードしながら上からスライド</a></li>
<li><a href="#list05">オフ画像が上にスライドしながら、オン画像が上からスライド</a></li>
<li><a href="#list06">フェードしながら拡大縮小</a></li>
<li><a href="#list07">下からスライド</a></li>
<li><a href="#list08">右からスライド</a></li>
</ol>
<p class="annotation"><ins datetime="2012-02-14T15:14:26+09:00">※2012/2/15 「7.下からスライド」と「8.右からスライド」を追加しました。</ins></p>
<section id="list01">
<h4>1.フェード</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#fade">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeFade(){

		var ovClass = &quot;rollover&quot;, //ロールオーバーする要素のクラス名
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		//classがrolloverのimg要素に対しての処理
		$(&quot;img.&quot;+ovClass).each(function(){

			var self = $(this),
			url = self.attr(&quot;src&quot;).replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return self.prev(&quot;img.&quot;+ovImg).length;
			}
			
			//ホバーイベント
			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({position:&quot;relative&quot;}).before(&quot;&lt;img style='position:absolute;' class='&quot;+ovImg+&quot;' src='&quot;+url+&quot;' alt='' /&gt;&quot;);
					}
					self.stop().animate({opacity:&quot;0&quot;},speed);
				}
			},
			function(){
				if(ovElmLen()){
					self.stop().animate({opacity:&quot;1&quot;},speed,function(){
						self.css({position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,url);
			});

		});

	}

	imgOvAnimeFade();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2012-02-14T15:14:26+09:00">※2012/2/15 上記スクリプトの記述を変更しました。</ins></p>
</section>
<section id="list02">
<h4>2.上からスライド</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#slide-top">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeSlideTop(){

		var ovClass = &quot;rollover&quot;,
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovRrap = &quot;ovRrap&quot;,
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		$(&quot;img.&quot;+ovClass).each(function(){ //classがrolloverのimg要素に対しての処理

			var self = $(this),
			urlDef = self.attr(&quot;src&quot;),
			urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElm(){
				return self.prev(&quot;span.&quot;+ovImg);
			}
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return ovElm().length;
			}
			function w(){
				return self.width()+&quot;px&quot;;
			}
			function h(){
				return self.height()+&quot;px&quot;;
			}

			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({opacity:&quot;0&quot;,position:&quot;relative&quot;})
						.before(&quot;&lt;img style='position:absolute;' class='&quot;+ovImg+&quot;' src='&quot;+urlDef+&quot;' alt='' /&gt;&quot;)
						.before(&quot;&lt;span style='width:&quot;+w()+&quot;;height:0;background-image:url(&quot;+urlChange+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;);
					}
					ovElm().stop().animate({height:h()},speed);
				}
			},
			function(){
				if(ovElmLen()){
					ovElm().stop().animate({height:&quot;0&quot;},speed,function(){
						self.css({opacity:&quot;1&quot;,position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlChange);
			});

		});

	}

	imgOvAnimeSlideTop();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2012-02-14T15:14:26+09:00">※2012/2/15 上記スクリプトの記述を変更しました。</ins></p>
</section>
<section id="list03">
<h4>3.左からスライド</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#slide-left">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeSlideLeft(){

		var ovClass = &quot;rollover&quot;,
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovRrap = &quot;ovRrap&quot;,
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		$(&quot;img.&quot;+ovClass).each(function(){ //classがrolloverのimg要素に対しての処理

			var self = $(this),
			urlDef = self.attr(&quot;src&quot;),
			urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElm(){
				return self.prev(&quot;span.&quot;+ovImg);
			}
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return ovElm().length;
			}
			function w(){
				return self.width()+&quot;px&quot;;
			}
			function h(){
				return self.height()+&quot;px&quot;;
			}

			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({opacity:&quot;0&quot;,position:&quot;relative&quot;})
						.before(&quot;&lt;img style='position:absolute;' class='&quot;+ovImg+&quot;' src='&quot;+urlDef+&quot;' alt='' /&gt;&quot;)
						.before(&quot;&lt;span style='display:inline;width:0;height:&quot;+h()+&quot;;background-image:url(&quot;+urlChange+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;);
					}
					ovElm().stop().animate({width:w()},speed);
				}
			},
			function(){
				if(ovElmLen()){
					ovElm().stop().animate({width:&quot;0&quot;},speed,function(){
						self.css({opacity:&quot;1&quot;,position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlChange);
			});

		});

	}

	imgOvAnimeSlideLeft();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2012-02-14T15:14:26+09:00">※2012/2/15 上記スクリプトの記述を変更しました。</ins></p>
</section>
<section id="list04">
<h4>4.フェードしながら上からスライド</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#fade-slide-top">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeFadeSlideTop(){

		var ovClass = &quot;rollover&quot;,
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovRrap = &quot;ovRrap&quot;,
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		$(&quot;img.&quot;+ovClass).each(function(){ //classがrolloverのimg要素に対しての処理

			var self = $(this),
			urlDef = self.attr(&quot;src&quot;),
			urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElm(){
				return self.prev(&quot;span.&quot;+ovImg);
			}
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return ovElm().length;
			}
			function w(){
				return self.width()+&quot;px&quot;;
			}
			function h(){
				return self.height()+&quot;px&quot;;
			}

			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({opacity:&quot;0&quot;,position:&quot;relative&quot;})
						.before(&quot;&lt;img style='position:absolute;' class='&quot;+ovImg+&quot;' src='&quot;+urlDef+&quot;' alt='' /&gt;&quot;)
						.before(&quot;&lt;span style='display:inline;width:&quot;+w()+&quot;;height:0;background-image:url(&quot;+urlChange+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;);
						ovElm().css({opacity:&quot;0&quot;});
					}
					ovElm().stop().animate({height:h(),opacity:&quot;1&quot;},speed);
				}
			},
			function(){
				if(ovElmLen()){
					ovElm().stop().animate({height:&quot;0&quot;,opacity:&quot;0&quot;},speed,function(){
						self.css({opacity:&quot;1&quot;,position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlChange);
			});

		});

	}

	imgOvAnimeFadeSlideTop();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2012-02-14T15:14:26+09:00">※2012/2/15 上記スクリプトの記述を変更しました。</ins></p>
</section>
<section id="list05">
<h4>5.オフ画像が上にスライドしながら、オン画像が上からスライド</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#slide-top2">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeSlideTop2(){

		var ovClass = &quot;rollover&quot;,
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovRrap = &quot;ovRrap&quot;,
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		$(&quot;img.&quot;+ovClass).each(function(){ //classがrolloverのimg要素に対しての処理

			var self = $(this),
			urlDef = self.attr(&quot;src&quot;),
			urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElm(){
				return self.prev(&quot;span.&quot;+ovImg);
			}
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return ovElm().length;
			}
			function w(){
				return self.width()+&quot;px&quot;;
			}
			function h(){
				return self.height()+&quot;px&quot;;
			}

			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({opacity:&quot;0&quot;,position:&quot;relative&quot;})
						.before(&quot;&lt;span style='display:inline;width:&quot;+w()+&quot;;height:&quot;+h()+&quot;;background-image:url(&quot;+urlDef+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;)
						.before(&quot;&lt;span style='display:inline;width:&quot;+w()+&quot;;height:0;background-image:url(&quot;+urlChange+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;);
					}
					ovElm().stop().animate({height:h()},speed)
					.prev(&quot;span.&quot;+ovImg).stop().animate({height:&quot;0&quot;},speed);
				}
			},
			function(){
				if(ovElmLen()){
					ovElm().stop().animate({height:&quot;0&quot;},speed)
					.prev(&quot;span.&quot;+ovImg).stop().animate({height:h()},speed,function(){
						self.css({opacity:&quot;1&quot;,position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlChange);
			});

		});

	}

	imgOvAnimeSlideTop2();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2012-02-14T15:14:26+09:00">※2012/2/15 上記スクリプトの記述を変更しました。</ins></p>
</section>
<section id="list06">
<h4>6.フェードしながら拡大縮小</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#fade-sizing">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeFadeSizing(){

		var ovClass = &quot;rollover&quot;,
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovRrap = &quot;ovRrap&quot;,
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		$(&quot;img.&quot;+ovClass).each(function(){ //classがrolloverのimg要素に対しての処理

			var self = $(this),
			urlDef = self.attr(&quot;src&quot;),
			urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElm(){
				return self.prev(&quot;span.&quot;+ovImg);
			}
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return ovElm().length;
			}
			function w(){
				return self.width()+&quot;px&quot;;
			}
			function h(){
				return self.height()+&quot;px&quot;;
			}

			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({opacity:&quot;0&quot;,position:&quot;relative&quot;})
						.before(&quot;&lt;span style='display:inline;width:&quot;+w()+&quot;;height:&quot;+h()+&quot;;background-image:url(&quot;+urlDef+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;)
						.before(&quot;&lt;span style='display:inline;width:0;height:0;background-image:url(&quot;+urlChange+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;);
						ovElm().css({opacity:&quot;0&quot;});
					}
					ovElm().stop().animate({width:w(),height:h(),opacity:&quot;1&quot;},speed)
					.prev(&quot;span.&quot;+ovImg).stop().animate({width:&quot;0&quot;,height:&quot;0&quot;,opacity:&quot;0&quot;},speed);
				}
			},
			function(){
				if(ovElmLen()){
					ovElm().stop().animate({width:&quot;0&quot;,height:&quot;0&quot;,opacity:&quot;0&quot;},speed)
					.prev(&quot;span.&quot;+ovImg).stop().animate({width:w(),height:h(),opacity:&quot;1&quot;},speed,function(){
						self.css({opacity:&quot;1&quot;,position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlChange);
			});

		});

	}

	imgOvAnimeFadeSizing();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
<p class="annotation"><ins datetime="2012-02-14T15:14:26+09:00">※2012/2/15 上記スクリプトの記述を変更しました。</ins></p>
</section>
<section id="list07">
<h4>7.下からスライド</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#slide-bottom">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeSlideBottom(){

		var ovClass = &quot;rollover&quot;,
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovRrap = &quot;ovRrap&quot;,
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		$(&quot;img.&quot;+ovClass).each(function(){ //classがrolloverのimg要素に対しての処理

			var self = $(this),
			urlDef = self.attr(&quot;src&quot;),
			urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElm(){
				return self.prev(&quot;span.&quot;+ovImg);
			}
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return ovElm().length;
			}
			function w(){
				return self.width()+&quot;px&quot;;
			}
			function h(){
				return self.height()+&quot;px&quot;;
			}

			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({opacity:&quot;0&quot;,position:&quot;relative&quot;})
						.before(&quot;&lt;img style='position:absolute;' class='&quot;+ovImg+&quot;' src='&quot;+urlChange+&quot;' alt='' /&gt;&quot;)
						.before(&quot;&lt;span style='width:&quot;+w()+&quot;;height:&quot;+h()+&quot;;background-image:url(&quot;+urlDef+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;);
					}
					ovElm().stop().animate({height:&quot;0&quot;},speed);
				}
			},
			function(){
				if(ovElmLen()){
					ovElm().stop().animate({height:h()},speed,function(){
						self.css({opacity:&quot;1&quot;,position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlChange);
			});

		});

	}

	imgOvAnimeSlideBottom();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
</section>
<section id="list08">
<h4>8.右からスライド</h4>
<p class="demo"><a href="/demo/jqueryimagerolloveranime/#slide-right">Demo</a></p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	function imgOvAnimeSlideRight(){

		var ovClass = &quot;rollover&quot;,
		ovStr = &quot;_ov&quot;, //ロールオーバー後の画像に追加する文字列
		ovRrap = &quot;ovRrap&quot;,
		ovImg = &quot;ovImg&quot;,
		speed = 500; //アニメーションの速度

		$(&quot;img.&quot;+ovClass).each(function(){ //classがrolloverのimg要素に対しての処理

			var self = $(this),
			urlDef = self.attr(&quot;src&quot;),
			urlChange = urlDef.replace(/^(.+)(\.[a-z]+)$/,&quot;$1&quot;+ovStr+&quot;$2&quot;);
			
			function ovElm(){
				return self.prev(&quot;span.&quot;+ovImg);
			}
			function ovElmLen(){ //ロールオーバー画像表示確認関数
				return ovElm().length;
			}
			function w(){
				return self.width()+&quot;px&quot;;
			}
			function h(){
				return self.height()+&quot;px&quot;;
			}

			self.hover(
			function(){
				if(!self.attr(&quot;src&quot;).match(ovStr+&quot;.&quot;)){
					if(!ovElmLen()){
						if(jQuery.support.checkOn &amp;&amp; jQuery.support.htmlSerialize &amp;&amp; !window.globalStorage){ //Operaバグ対策
							self.before(&quot;&lt;span style='display:inline-block;' class='&quot;+ovImg+&quot;' &gt;&lt;/span&gt;&quot;);
						}
						self.css({opacity:&quot;0&quot;,position:&quot;relative&quot;})
						.before(&quot;&lt;img style='position:absolute;' class='&quot;+ovImg+&quot;' src='&quot;+urlChange+&quot;' alt='' /&gt;&quot;)
						.before(&quot;&lt;span style='display:inline;width:&quot;+w()+&quot;;height:&quot;+h()+&quot;;background-image:url(&quot;+urlDef+&quot;);position:absolute;' class='&quot;+ovImg+&quot;'&gt;&lt;/span&gt;&quot;);
					}
					ovElm().stop().animate({width:&quot;0&quot;},speed);
				}
			},
			function(){
				if(ovElmLen()){
					ovElm().stop().animate({width:w()},speed,function(){
						self.css({opacity:&quot;1&quot;,position:&quot;static&quot;})
						.prevAll(&quot;.&quot;+ovImg).remove();
					});
				}
			})
			.each(function(){ //プリロード設定
				$(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;,urlChange);
			});

		});

	}

	imgOvAnimeSlideRight();

});
</pre>
</div>
<p class="annotation"><ins datetime="2012-08-10T05:39:58+09:00">※2012/8/10 エラーが起きていましたので上記スクリプトを修正しました。</ins></p>
</section>
</section>
</section>
<section>
<h2>解説</h2>
<p>ホバー時に<em>画像</em>や<em>背景画像もつ要素</em>を追加し下に重ねて、一番上の<em>元画像</em>は<code>opacity</code>で透明にし要素を残しつつそれぞれをアニメーションさせます。<em>元画像</em>の要素が消えるとホバー状態ではなくってしまいますので。</p>
</section>
<section>
<h2>あとがき</h2>
<p>複数同時に使えるようにスクリプトを1つにまとめようかと思いましたが、出来るか分からないし、重くなりそうだし、めんどいし。ってことでやめました。まー、2種類同時使うことは稀だと思いますしね。</p>
<p><a href="http://plugins.jquery.com/project/backgroundPosition-Effect">jquery.bgpos.js</a>を使い<code>background-position</code>をアニメーションさせると違った動きもできます。今回の記事では使っていませんがね。気が向いたらそっちも記事にするかもです。</p>
<p>兎にも角にも、コレ作ってる間Operaちゃんのバグに悩まされた日々でしたとさ。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/javascript/jqueryimagerolloveranime/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Canvasで実現するカラフルな円が小さくなったり大きくなったりする背景</title>
		<link>http://web-mugen.com/canvas/bgcolorfulroundsizeanime/</link>
		<comments>http://web-mugen.com/canvas/bgcolorfulroundsizeanime/#respond</comments>
		<pubDate>Thu, 25 Nov 2010 09:30:47 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[Canvas]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[カラフル]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=810</guid>
		<description><![CDATA[ハイきました。待望のCanvasです。イロイロ頑張って動かしてみました。お手製の雑なイージング付きです。分かりやすいよう多少ウザ目に作っていますが、調整したら普通のページに組み込んでもイケるかも。結構重いですけどね。。。 [...]]]></description>
				<content:encoded><![CDATA[<p>ハイきました。待望のCanvasです。イロイロ頑張って動かしてみました。お手製の雑なイージング付きです。分かりやすいよう多少ウザ目に作っていますが、調整したら普通のページに組み込んでもイケるかも。結構重いですけどね。。。</p>
<p>自分ならCanvasで何をしたいかと考えたすえに、Flashの様なリッチ感をだしたいと思いたちこの内容にしました。いろんなサイトで見るCanvasに比べたらマダマダですが、どうぞご覧アレ。</p>
<p class="demo"><a href="/demo/bg-colorful-round-size-anime/">Demo</a></p>
<p><span id="more-810"></span></p>
<p class="annotation"><ins datetime="2011-06-22T12:52:45+09:00">※新バージョンを公開していますのでよろしければ<a href="/canvas/bg-colorful-round-size-anime_2/">Canvasで実現するカラフルな円が小さくなったり大きくなったりする背景2</a>をご覧下さい。</ins></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
</ul>
</section>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari3~</li>
<li>Firefox2~</li>
<li>Opera10.6</li>
</ul>
<p class="annotation">※Windowsのみの確認です。</p>
<p>IEも頑張ればちゃんと表示できそうですが、どのみち処理が重いので除外しました。</p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p><code>body</code>の直下に背景の要素（Canvas）とコンテンツの要素を用意する。以下の場合は<code>#canvasbg</code>と<code>#contents</code>になる。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;body&gt;
	&lt;div id=&quot;canvasbg&quot;&gt;
		&lt;canvas id=&quot;canvas&quot;&gt;&lt;/canvas&gt;
	&lt;/div&gt;
	&lt;div id=&quot;contents&quot;&gt;
		&lt;p&gt;テキストテキストテキストテキストテキスト&lt;/P&gt;
	&lt;/div&gt;
&lt;/body&gt;
</pre>
</div>
<p class="annotation">※デモページのHTMLはテンプレートを崩さないよう記述を変更しています。</p>
</section>
<section>
<h3>CSS</h3>
<p>以下のCSSは基本的にCanvasを背景にする為の設定です。ただし、JavaScriptも使用して対応している為、下記CSSのみではCanvasを背景に出来ません。</p>
<div class="code">
<pre class="brush: css; title: ; notranslate">
html {
	height: 100%;
}
body {
	min-height: 100%;
	overflow: auto;
	position:relative;
	z-index: 1;
}
#canvasbg {
	height: auto;
	width: 100%;
	height:100%;
	min-height:100%;
	overflow: auto;
	position: fixed;
	z-index: 1;
}
#canvasbg canvas {
	position: fixed;
	z-index: 1;
}
#contents {
	width: 600px;
	margin: 20px auto;
	position: relative;
	z-index: 2;
}
</pre>
</div>
<p class="annotation">※デモページのCSSはテンプレートを崩さないよう記述を変更しています。</p>
<p class="annotation"><ins datetime="2012-04-07T02:53:28+09:00">※2012/4/7 コンテンツの高さがブラウザの表示領域より小さい場合に背景が切れていましたので、上記CSSを修正しました。</ins></p>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	//変数宣言
	var Canvas = $(&quot;#canvas&quot;),
	CanvasBg = $(&quot;#canvasbg&quot;),
	alpha = 0.2, //透明度
	locArray = 100, //位置の配列数
	sizeArray = 100, //サイズの配列数
	colorArray = 600, //カラーの配列数
	speed = 50, //アニメーション速度
	canvasWidth,
	canvasHeight,
	locNum,
	sizeNum,
	colorNum,
	colorR,
	colorG,
	colorB,
	ctx,
	loc,
	nowSize;
	
	//配列作成
	randomLoc = new Array();
	randomSize = new Array();
	randomSizeInitial = new Array();
	randomColor = new Array();
	sizeValue = new Array();
	easing = new Array();

	//ランダム値作成関数
	function random(num,min){ //minは最小値、num+minは最大値
		randomNum = Math.floor(Math.random()*num)+min;
		return randomNum;
	}

	//配列追加
	for(var i=0; i&lt;locArray; i++){
		randomLoc.push(random(50,50));
	}
	for(var i=0; i&lt;sizeArray; i++){
		randomSize.push(random(90,10));
	}
	for(var i=0; i&lt;colorArray; i++){
		randomColor.push(random(255,0));
	}
	for(var i=0; i&lt;sizeArray; i++){
		sizeValue.push(1);
	}
	for(var i=0; i&lt;randomSize.length; i++){
		randomSizeInitial[i] = randomSize[i];
	}
	for(var i=0; i&lt;4; i++){
		easing.push(i+2);
	}

	//カラー設定関数
	function color(){
		 return &quot;rgba(&quot;+colorR+&quot;,&quot;+colorG+&quot;,&quot;+colorB+&quot;,&quot;+alpha+&quot;)&quot;;
	}

	//サイズパーセンテージ設定関数
	function sizeRatio(num,ratio){
		return randomSizeInitial[num]/100*ratio;
	}

	//Canvas表示関数
	function init(){
		var canvas = document.getElementById(&quot;canvas&quot;);
		if (canvas.getContext){
			ctx = canvas.getContext(&quot;2d&quot;);
			setInterval(draw, speed); //draw関数を繰り返す
		}
	}

	//Canvas表示内容
	function draw(){

		//Canvasを#canvasbg（背景と同じサイズ）と同じサイズにする
		Canvas.attr({height:CanvasBg.height()}).attr({width:CanvasBg.width()});

		canvasWidth = Canvas.width();
		canvasHeight = Canvas.height();

		//Canvasをクリア
		ctx.clearRect(0,0,canvasWidth,canvasHeight);

		//円の重なり部分の描写を設定
		ctx.globalCompositeOperation = &quot;lighter&quot;;

		//変数を0に設定
		locNum = 0;
		sizeNum = 0;
		colorNum = 0;

		//ランダムに円を作成
		for(var i=0; i&lt;canvasWidth; i+=loc){
			for(var j=0; j&lt;canvasWidth; j+=loc){
				loc = randomLoc[locNum++];
				if(locNum&gt;randomLoc.length-1){
					locNum = 0;
				}
				size = randomSize[sizeNum++];
				if(sizeNum&gt;randomSize.length-1){
					sizeNum = 0;
				}
				colorR = randomColor[colorNum++];
				colorG = randomColor[colorNum++];
				colorB = randomColor[colorNum++];
				if(colorNum&gt;randomColor.length-1){
					colorNum = 0;
				}
				ctx.beginPath();
				ctx.fillStyle = color();
				ctx.arc(j, i, size, 0, Math.PI*2, true);
				ctx.fill();
			}
		}

		//サイズ配列の数値を変更（アニメーション設定）
		for(var i=0; i&lt;randomSize.length; i++){

			nowSize = randomSize[i];

			//イージング設定
			if(nowSize&lt;sizeRatio(i,90) &amp;&amp; nowSize&gt;sizeRatio(i,10)){
				sizeValue[i] *= easing[0];
			} else
			if(nowSize&lt;sizeRatio(i,80) &amp;&amp; nowSize&gt;sizeRatio(i,20)){
				sizeValue[i] *= easing[1];
			} else
			if(nowSize&lt;sizeRatio(i,70) &amp;&amp; nowSize&gt;sizeRatio(i,30)){
				sizeValue[i] *= easing[2];
			} else
			if(nowSize&lt;sizeRatio(i,60) &amp;&amp; nowSize&gt;sizeRatio(i,40)){
				sizeValue[i] *= easing[3];
			}

			//サイズが0もしくは初期値になったら縮小拡大を反転する
			if(nowSize&gt;randomSizeInitial[i] || nowSize&lt;1){
				sizeValue[i] *= -1;
			}

			//縮小拡大の値を計算
			randomSize[i]-=sizeValue[i];

			//イージング用に変更したsizeValueの値をリセット
			switch(sizeValue[i]){
				case easing[0]:
				case -easing[0]:
					sizeValue[i] /= easing[0];
					break;
				case easing[1]:
				case -easing[1]:
					sizeValue[i] /= easing[1];
					break;
				case easing[2]:
				case -easing[2]:
					sizeValue[i] /= easing[2];
					break;
				case easing[3]:
				case -easing[3]:
					sizeValue[i] /= easing[3];
					break;
			}

		}

	}

	//Canvas表示
	init();

});
</pre>
</div>
</section>
</section>
<section>
<h2>解説</h2>
<p>Canvasは一度描写したものを消して再描写することによりアニメーションする為、ランダム値を毎回取得すると再描写ごとに違った表示になってしまいます。ですので、先にグローバルな配列としてランダム値を用意しておいて、再描写の度に同じ値を参照するようにする。そして、アニメーションさせる要素（今回はサイズ）の配列を再描写の際に変更することでアニメーションすることが出来ます。</p>
<p>かなり重くなってしまいましたが、円の数や再描写の速度を調整することで多少は軽くなります。</p>
</section>
<section>
<h2>参考サイト</h2>
<ul>
<li><a href="http://tech.kayac.com/archive/canvas_background.html">canvasでキラキラした背景を作る方法 | tech.kayac.com &#8211; KAYAC engineers&#8217; blog</a></li>
</ul>
</section>
<section>
<h2>あとがき</h2>
<p>折角だし？Canvasもやってみよう。って感じで作ってみましたが、面白いですねCanvas。お陰様で結構勉強になりました。CanvasってゆうよりJavaScriptの。ランダム値やらswitch文やら初めて使うものもチラホラとありましてね。最終的に想像通りに動作したので嬉しかったです。</p>
<p>ちなみに前の記事から1ヶ月ほども経っていました。なかなか記事の内容が思い浮かばなかったもので。今回の内容も記事にするつもりで作った訳ではなかったんですが、丁度いいやって思って載せました。思ったよりチャント出来たので。まー今後もこんな感じでダラダラと更新します。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/canvas/bgcolorfulroundsizeanime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>回転型切替コンテンツを実現するCSS3を使ったjQueryのスクリプト</title>
		<link>http://web-mugen.com/javascript/jqueryrotationchangecontents/</link>
		<comments>http://web-mugen.com/javascript/jqueryrotationchangecontents/#respond</comments>
		<pubDate>Wed, 27 Oct 2010 09:00:31 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[回転]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=750</guid>
		<description><![CDATA[ちょっと前から構想を練っていたスクリプトです。まー同じようなものは探せばどこかにあるでしょうけどね～。でも考えたからには作っておきゃなきゃって感じで制作しました。 CSS3とjQueryのコンビネーション。とっても素敵で [...]]]></description>
				<content:encoded><![CDATA[<p>ちょっと前から構想を練っていたスクリプトです。まー同じようなものは探せばどこかにあるでしょうけどね～。でも考えたからには作っておきゃなきゃって感じで制作しました。</p>
<p>CSS3とjQueryのコンビネーション。とっても素敵です。でもクロスブラウザなjQueryでもCSS3の全てには対応しきれないところが残念です。でもまあ作っててとっても楽しかったです。</p>
<p class="demo"><a href="/demo/jquery_rotation-change-contents/">Demo</a></p>
<p><span id="more-750"></span></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
</ul>
</section>
<section>
<h2>対応ブラウザ</h2>
<ul>
<li>Google Chrome</li>
<li>Safari4~</li>
<li>Firefox4（beta）~</li>
</ul>
<p class="annotation">※Windowsのみの確認です。</p>
<p>他のブラウザでもどーにか別の動作で見ることは出来るようにしています。<del datetime="2010-10-27">美しくはありませんが。。。</del>また、Opera10.6は動きがスムーズではないので対応ブラウザから外しています。</p>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p><code>#rotaMenu</code>にメニューを<code>#rotationWrap</code>にコンテンツをそれぞれ4つづつ用意します。</p>
<p>4つ以下はいいのですが、4つを超えるコンテンツを配置することは出来ません。何故ならコンテンツの左上を中心として風車のようにコンテンツを配置するからです。</p>
<p><code>.rote</code>の内容はなんでもいいです。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;ul id=&quot;rotaMenu&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;#box1&quot;&gt;メニュー1&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#box2&quot;&gt;メニュー2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#box3&quot;&gt;メニュー3&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#box4&quot;&gt;メニュー4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div id=&quot;rotationWrap&quot;&gt;
	&lt;div id=&quot;rotation&quot;&gt;
		&lt;div id=&quot;box1&quot; class=&quot;rota&quot;&gt;
			&lt;p&gt;テキストテキストテキスト&lt;/p&gt;
		&lt;/div&gt;
		&lt;div id=&quot;box2&quot; class=&quot;rota&quot;&gt;
			&lt;p&gt;テキストテキストテキスト&lt;/p&gt;
		&lt;/div&gt;
		&lt;div id=&quot;box3&quot; class=&quot;rota&quot;&gt;
			&lt;p&gt;テキストテキストテキスト&lt;/p&gt;
		&lt;/div&gt;
		&lt;div id=&quot;box4&quot; class=&quot;rota&quot;&gt;
			&lt;p&gt;テキストテキストテキスト&lt;/p&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
</div>
</section>
<section>
<h3>CSS</h3>
<p>元々CSS3を使ったスクリプトなので、装飾にもCSS3をふんだんに使って装飾してます。</p>
<div class="code">
<pre class="brush: css; title: ; notranslate">
ul#rotaMenu {
	display: inline-block;
	margin-bottom: 10px;
}
ul#rotaMenu li {
	margin-right: 10px;
	float: left;
}
ul#rotaMenu li a {
	display: block;
	width: 100px;
	background-color: #eee;
	background: -webkit-gradient(linear,center top,center bottom,from(#fff),to(#ddd));
	background: -moz-linear-gradient(top, #fff, #ddd);
	background: -o-gradient(linear,center top,center bottom,from(#fff),to(#ddd));
	border: 1px solid #ccc;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-box-shadow: 0 0 3px #ccc;
	-moz-box-shadow: 0 0 3px #ccc;
	padding: 5px;
	color: #666;
	text-shadow: 1px 1px 0 #fff;
	text-align: center;
	text-decoration: none;
	font-size: 18px;
}
ul#rotaMenu li a:hover {
	background: -webkit-gradient(linear,center top,center bottom,from(#ddd),to(#fff));
	background: -moz-linear-gradient(top, #ddd, #fff);
}
ul#rotaMenu li a#active {
	background-color: #666;
	background: -webkit-gradient(linear,center top,center bottom,from(#666),to(#333));
	background: -moz-linear-gradient(top, #666, #333);
	border: 1px solid #333;
	color: #ddd;
	text-shadow: -1px -1px 0 #333;
}
div#rotationWrap {
	width: 798px;
	background-color: #eee;
	background: -webkit-gradient(linear, center top, center bottom, from(#f7f7f7), to(#eee));
	background: -moz-linear-gradient(top, #f7f7f7, #eee);
	border: 1px solid #fff;
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	-webkit-box-shadow: 0 0 5px #bbb;
	-moz-box-shadow: 0 0 5px #bbb;
	overflow: hidden;
	-webkit-transition: all 0.5s ease-in-out;
	-moz-transition: all 0.5s ease-in-out;
	-o-transition: all 0.5s ease-in-out;
}
div#rotation {
	position: relative;
	-webkit-transform-origin: 0 0;
	-moz-transform-origin: 0 0;
	-o-transform-origin: 0 0;
	-webkit-transition: all 0.5s ease-in-out;
	-moz-transition: all 0.5s ease-in-out;
	-o-transition: all 0.5s ease-in-out;
}
div#rotation div.rota {
	width: 780px;
	padding: 10px;
	-webkit-transform-origin: 0 0;
	-moz-transform-origin: 0 0;
	-o-transform-origin: 0 0;
}
div#rotation div.rota p {
	color: #333;
	text-shadow: 1px 1px 0 #fff;
	line-height: 1.5;
}
</pre>
</div>
<p class="annotation"><ins datetime="2011-09-01T13:54:40+09:00">※2011/09/01&nbsp;上記CSSを修正しました。（見が目が少し気になったので。）</ins></p>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	//対象要素設定
	var wrap = $(&quot;#rotationWrap&quot;);
	var rotaArea = $(&quot;#rotation&quot;);
	var menu = $(&quot;#rotaMenu a&quot;);
	var rotaBox = $(&quot;div.rota&quot;,rotaArea);

	//初期表示設定
	$(window).bind(&quot;load&quot;,function(){ //ロード終了後実行
		wrap.css({
			height: rotaBox.eq(0).prop(&quot;offsetHeight&quot;) //#rotationWrapの高さを一つめのdiv.rota高さに合わせる
		});
	});
	menu.eq(0).attr(&quot;id&quot;,&quot;active&quot;); //一つめのdiv.rotaにのid属性activeを加える
	if(!jQuery.support.opacity){ //IE6,7,8に適用
		rotaBox.not(&quot;:eq(0)&quot;).css({
			visibility: &quot;hidden&quot; //一つめ以外のdiv.rotaを非表示にする
		});
	};
	
	//メニューアクティブ変更クリックイベント
	menu.click(function(){ //クリックされた#rotaMenu aに対してid属性activeを移動する
		menu.not(this).removeAttr(&quot;id&quot;);
		$(this).attr(&quot;id&quot;,&quot;active&quot;);
	});

	//css設定
	rotaBox.css({
		position: &quot;absolute&quot;,
		top: &quot;0&quot;,
		left: &quot;0&quot;
	});

	//div.rotaに対しての設定
	rotaBox.each(function(){ //div.rotaをそれぞれを90度づつずらして回転させる
		var index = rotaBox.index(this);
		var angle = 90*index;
		var rotate = &quot;rotate(-&quot;+angle+&quot;deg)&quot;;
		$(this).css({
			&quot;-webkit-transform&quot;: rotate,
			&quot;-moz-transform&quot;: rotate,
			&quot;-o-transform&quot;: rotate,
			&quot;-ms-transform&quot;: rotate,
			&quot;transform&quot;: rotate
		});
	});

	//コンテンツ回転クリックイベント
	menu.click(function(){ //#rotaMenu aをクリックで#rotationを回転させる
		var index = menu.index(this);
		var boxHeight = rotaBox.eq(index).prop(&quot;offsetHeight&quot;);
		var angle = 90*index;
		var rotate = &quot;rotate(&quot;+angle+&quot;deg)&quot;;
		rotaArea.css({
			height: boxHeight,
			&quot;-webkit-transform&quot;: rotate,
			&quot;-moz-transform&quot;: rotate,
			&quot;-o-transform&quot;: rotate,
			&quot;-ms-transform&quot;: rotate,
			&quot;transform&quot;: rotate
		});
		if(!jQuery.support.opacity){ //IE6,7,8に適用
			rotaBox.eq(index).css({ //クリックしたdiv.rotaを表示する
				visibility: &quot;visible&quot;
			});
			rotaBox.not(&quot;':eq(&quot;+index+&quot;)'&quot;).css({ //クリックした以外のdiv.rotaを非表示にする
				visibility: &quot;hidden&quot;
			});
		};
		wrap.css({ //表示されているdiv.rotaにあわせて#rotationWrapの高さを変更する
			height: boxHeight
		});
		return false;
	});

});
</pre>
</div>
<p class="annotation"><ins datetime="2011-09-01T13:54:40+09:00">※2011/09/01&nbsp;jQueryのバージョンアップにより上記スクリプトが動かなくなっていましたので修正しました。</ins></p>
<p class="annotation"><ins datetime="2010-10-27T13:54:03+09:00">※2010/10/27&nbsp;上記スクリプトの記述を変更しました。</ins></p>
</section>
</section>
<section>
<h2>解説</h2>
<p>全ての<code>.rota</code>を<code>position: absolute;</code>で重ねて<em>左上を中心</em>にそれぞれ90度ずつずらし、枠からはみ出るコンテンツは<code>overflow: hidden;</code>で見えなくします。</p>
<p><code>.rota</code>の親要素<code>#rotation</code>の角度を<code>transform: roteto();</code>で設定し、1つ目のメニューをクリックすると0度、2つ目で－90度、3つ目で－180度、4つ目で－270度となるよう回転させます。CSSで<code>transform</code>を設定していますので、風車の様にアニメーションでグルグルとまわります。</p>
<p><code>#rotation</code>の親要素<code>#rotationWrap</code>に設定している枠は見えているコンテンツの高さに合わせて調整されるようにします。</p>
<p>一応おまけでアクティブ状態のメニューはCSSが切り替わるよう設定しました。</p>
</section>
<section>
<h2>あとがき</h2>
<p>記事の内容とは関係ない話ですけど、ブログで記事を書くようになりましたが、自分の文章が定まりません。はじめはきちんとか書こうと思っていましたが、すぐに辛くなってきました。ですので、そのときの気分で書くことにしました。記事ごとに文言や文脈などコロコロ変わっていると思います。でもそのほうが楽しいし楽だからいいかなって思ってます。なにより続けたいですから。続けなきゃじゃなくてね。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/javascript/jqueryrotationchangecontents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ひものれんみたいなjQueryのスクリプト</title>
		<link>http://web-mugen.com/javascript/jqueryhimonoren/</link>
		<comments>http://web-mugen.com/javascript/jqueryhimonoren/#respond</comments>
		<pubDate>Tue, 05 Oct 2010 09:43:12 +0000</pubDate>
		<dc:creator><![CDATA[Syuji]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ひものれん]]></category>

		<guid isPermaLink="false">http://web-mugen.com/?p=706</guid>
		<description><![CDATA[見出しをみてなんのこっちゃって？って思った方は・・・多分全員でしょうね。なんとなく制作してみたなんの実用性もないようなスクリプトですが、これがまたなんて表現してよいのやら。頑張って考えてみたスクリプト名が見出しのとおりで [...]]]></description>
				<content:encoded><![CDATA[<p>見出しをみてなんのこっちゃって？って思った方は・・・多分全員でしょうね。なんとなく制作してみたなんの実用性もないようなスクリプトですが、これがまたなんて表現してよいのやら。頑張って考えてみたスクリプト名が見出しのとおりです。百聞は一見にしかずってことで、デモページでも見て下さいな。そしてあまりの意味の無さ、使いどころの無さに嘆いて下されば幸いです。</p>
<p class="demo"><a href="/demo/jquery_himo-noren/">Demo</a></p>
<p><span id="more-706"></span></p>
<section>
<h2>必要なファイル</h2>
<ul>
<li><a href="http://jquery.com/">jquery.js</a></li>
</ul>
</section>
<section>
<h2>コーディング＆設定</h2>
<section>
<h3>HTML</h3>
<p>HTMLヘッダー内で<em>jquery.js</em>を読み込む。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
</div>
<p><code>.himonoren</code>をつけた要素の子孫要素にあるimgにスクリプトが適応されます。</p>
<div class="code">
<pre class="brush: xml; title: ; notranslate">
&lt;ul id=&quot;sample&quot;&gt;
	&lt;li&gt;&lt;div class=&quot;himonoren&quot;&gt;&lt;img src=&quot;jqueryhimonoren_img_sample1.jpg&quot; alt=&quot;&quot;&gt;&lt;/div&gt;&lt;/li&gt;
	&lt;li&gt;&lt;div class=&quot;himonoren&quot;&gt;&lt;img src=&quot;jqueryhimonoren_img_sample2.jpg&quot; alt=&quot;&quot;&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
</div>
</section>
<section>
<h3>CSS</h3>
<p>以下のCSSはデザイン用なので、好きなように変えても動作に問題は無いと思います。</p>
<div class="code">
<pre class="brush: css; title: ; notranslate">
ul#sample {
	display: inline-block;
	margin-left: 10px;
}
ul#sample li {
	background-color: #fff;
	border: 1px solid #ccc;
	padding: 9px;
	margin: 0 10px 10px 0;
	float: left;
}
</pre>
</div>
</section>
<section>
<h3>JavaScript</h3>
<p>以下のスクリプトを記述。</p>
<div class="code">
<pre class="brush: jscript; title: ; notranslate">
$(function(){

	//対象要素設定
	var Noren = $(&quot;.himonoren&quot;);
	
	//一旦画像を非表示
	$(&quot;img&quot;,Noren).hide();

	//ロード終了後実行
	$(window).bind(&quot;load&quot;, function(){

		//classがhimonorenの要素に対しての処理
		Noren.each(function(){

			//変数宣言
			var This = $(this),
			NorenImg = $(&quot;img&quot;,This),
			ImgWidth = NorenImg.width(), //画像の幅を取得
			ImgHeight = NorenImg.height(); //画像の高さを取得

			//CSS設定
			This.css({
				width: ImgWidth,
				height: ImgHeight,
				position: &quot;relative&quot;
			});
			NorenImg.css({position: &quot;absolute&quot;});

			//要素追加
			for(var i=0; i&lt;ImgWidth; i++){ //画像の幅のサイズ分要素を追加
				NorenImg.after(&quot;&lt;span&gt;&lt;/span&gt;&quot;);
			}
			
			//追加要素CSS設定
			var NorenSpan = $(&quot;span&quot;,This);
			var NorenSpanLng = NorenSpan.length;
			NorenSpan.css({ //追加要素を幅1px高さは画像と同じにして画像の上に重なるよう設定
				display: &quot;block&quot;,
				width: &quot;1px&quot;,
				height: ImgHeight+&quot;px&quot;,
				backgroundColor: &quot;#fff&quot;,
				position: &quot;absolute&quot;,
				top: &quot;0&quot;
			});
			for(var i=0; i&lt;NorenSpanLng; i++){ //追加要素の位置を1pxずつ横にずらす
				NorenSpan.eq(i).css({left: i});
			}
			
			//非表示にしていた画像を表示
			NorenImg.show();

			//ホバーイベント
			NorenSpan.hover(
			function(){ //追加要素マウスオン時にフェードアウト設定
				$(this).not(&quot;:animated&quot;).fadeOut(200);
			},
			function(){ //追加要素マウスアウト時にフェードイン設定
				$(this).fadeIn(5000);
			});

		});

	});

});
</pre>
</div>
</section>
</section>
<section>
<h2>解説</h2>
<p><code>.himonoren</code>内の最後に幅<em>1px</em>で高さは画像と同じ<code>span</code>を追加し、画像の幅のピクセル分量産して横にならべます。つまり全ての<code>span</code>を合わせたサイズは画像と同じサイズになります。それを画像の上に重ねます。この時点で画像は見えなくなっています。最後に<code>span</code>をマウスオンでフェードアウト、マウスアウトでフェードインするようにします。結果、横幅<em>1px</em>の<code>span</code>がひとつづつフェードし下の画像が見えたり見えなくなったりしますのでひものれん？みたいに動作します。</p>
</section>
<section>
<h2>あとがき</h2>
<p>説明を増やしていこうと思い、ざっくりとした解説を記述しました。また、ソースコードもコメントアウトでの説明を増やしました。仕事でJS作ってる訳でもないので基本的なことすら忘れることも多々あります。だから色々書いておけば、記事を書くときは大変だけど見返すときに便利かなとってーのと、世の中に公開している以上は多少は説明すべきかなって思いに至った訳です。私もそういった方々に助けられてきた訳ですし、少しは人の為にって偽善を振りまくのも悪くないんじゃないかな。まー今回の内容は誰の為にもならなそうですが。。。</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://web-mugen.com/javascript/jqueryhimonoren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.700 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2021-03-09 19:43:53 -->
