▼画像にマウスオーバーするとCSSで背景にしていたもう一枚の画像が表示され、元画像と交じり合いながら消えて息、元の画像に戻ります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="ja" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="imagetoolbar" content="no" /> <title>CSS Tooltips - loadaverageZero | 設置サンプル</title> <link rel="stylesheet" type="text/css" href="/content/lib/global.css" media="all" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> <script type="text/javascript"> // wrap as a jQuery plugin and pass jQuery in to our anoymous function (function ($) { $.fn.cross = function (options) { return this.each(function (i) { // cache the copy of jQuery(this) - the start image var $$ = $(this); // get the target from the backgroundImage + regexp var target = $$.css('backgroundImage').replace(/^url|[\(\)'"]/g, ''); // nice long chain: wrap img element in span $$.wrap('<span style="position: relative;"></span>') // change selector to parent - i.e. newly created span .parent() // prepend a new image inside the span .prepend('<img>') // change the selector to the newly created image .find(':first-child') // set the image to the target .attr('src', target); // the CSS styling of the start image needs to be handled // differently for different browsers if ($.browser.msie || $.browser.mozilla) { $$.css({ 'position' : 'absolute', 'left' : 0, 'background' : '', 'top' : this.offsetTop }); } else if ($.browser.opera && $.browser.version < 9.5) { // Browser sniffing is bad - however opera < 9.5 has a render bug // so this is required to get around it we can't apply the 'top' : 0 // separately because Mozilla strips the style set originally somehow... $$.css({ 'position' : 'absolute', 'left' : 0, 'background' : '', 'top' : "0" }); } else { // Safari $$.css({ 'position' : 'absolute', 'left' : 0, 'background' : '' }); } // similar effect as single image technique, except using .animate // which will handle the fading up from the right opacity for us $$.hover(function () { $$.stop().animate({ opacity: 0 }, 250); }, function () { $$.stop().animate({ opacity: 1 }, 250); }); }); }; })(jQuery); // note that this uses the .bind('load') on the window object, rather than $(document).ready() // because .ready() fires before the images have loaded, but we need to fire *after* because // our code relies on the dimensions of the images already in place. $(window).bind('load', function () { $('img.fade').cross(); }); </script> <style type="text/css"> body{ margin:20px; padding:0; font:12px/1.5 verdana,sans-seif; } h1 { font-size:150%; } img { border:0; } </style> <link rel="stylesheet" type="text/css" href="/common/css/example.css"></head> <body id='example3' class='example'><div class="ads" style="margin:32px auto;text-align:center;"></div><h1 class='h'><a href='/'>PHP & JavaScript Room</a> :: 設置サンプル</h1> <h3 class='h'>実行結果</h3> <h1><a href='http://jqueryfordesigners.com/image-cross-fade-transition/'>Image Cross Fade Transition</a> | 設置サンプル</h1> <p>▼画像にマウスオーバーするとCSSで背景にしていたもう一枚の画像が表示され、元画像と交じり合いながら消えて息、元の画像に戻ります。</p> <div> <img class="fade" src="/content/img/ajax/start.png" style="background:url(/content/img/ajax/end.png);" alt="Who we are" /> <img class="fade" src="/content/img/ajax/start2.png" style="background:url(/content/img/ajax/end2.png);" alt="Who we are" /> <img class="fade" src="/content/img/ajax/start3.png" style="background:url(/content/img/ajax/end3.png);" alt="Who we are" /> </div> </body> </html>