/** * クãƒã‚¹ãƒ•ェードã™ã‚‹ãƒãƒ¼ãƒ«ã‚ªãƒ¼ãƒãƒ¼å‡¦ç† * rollover2.js * Copyright (c) 2007 KAZUMiX * http://d.hatena.ne.jp/KAZUMiX/20071017/rollover2 * * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php * * æ›´æ–°å±¥æ´ * 2009/06/02 ブラウザã®ã€Œæˆ»ã‚‹ã€ã§ãƒ•ã‚§ãƒ¼ãƒ‰çŠ¶æ…‹ãŒæ®‹ã£ã¦ã„ã‚‹å ´åˆã«å¯¾å‡¦ * 2007/10/17 公開 */ (function(){ // ページé·ç§»æ™‚ã«é€æ˜Žã«ã™ã‚‹ç”¨ var rolloverImages = []; function setRollOver2(){ if(!document.images){return;} var imgs = document.images; var insert = []; for(var i=0,len=imgs.length; i<len; i++){ var splitname = imgs[i].src.split('_rollout.'); if(splitname[1]){ var rolloverImg = document.createElement('img'); rolloverImages.push(rolloverImg); rolloverImg.src = splitname[0]+'_rollover.'+splitname[1]; var alpha = 0; rolloverImg.currentAlpha = alpha; rolloverImg.style.opacity = alpha/100; rolloverImg.style.filter = 'alpha(opacity='+alpha+')'; rolloverImg.style.position = 'absolute'; //ãƒãƒ¼ãƒ«ã‚ªãƒ¼ãƒãƒ¼ãƒ»ã‚¢ã‚¦ãƒˆå‡¦ç†ãれãžã‚Œã‚’è¨å®š addEvent(rolloverImg,'mouseover',function(){setFader(this,100);}); addEvent(rolloverImg,'mouseout',function(){setFader(this,0);}); // 後ã§è¿½åŠ ã™ã‚‹ãŸã‚ã«è¿½åŠ å ´æ‰€ã¨å…±ã«ä¿å˜ã—ã¦ãŠã // ã“ã®æ™‚点ã§è¿½åŠ ã™ã‚‹ã¨document.imagesãŒæ›¸ãæ›ã‚ã£ã¦ä¸éƒ½åˆ insert[insert.length] = {position:imgs[i],element:rolloverImg}; } } // ↑ã§ä½œã£ãŸãƒãƒ¼ãƒ«ã‚ªãƒ¼ãƒãƒ¼ç”»åƒã‚’è¿½åŠ for(i=0,len=insert.length; i<len ;i++){ var parent = insert[i].position.parentNode; parent.insertBefore(insert[i].element,insert[i].position); } // ページé·ç§»æ™‚ã«ã¯ãƒ•ェード状態をクリアã™ã‚‹ addEvent(window,'beforeunload', clearRollover); } // 指定è¦ç´ ã‚’æŒ‡å®šé€æ˜Žåº¦ã«ã™ã‚‹ãŸã‚ã®ãƒ•ェードアニメをè¨å®šã™ã‚‹é–¢æ•° function setFader(targetObj,targetAlpha){ targetObj.targetAlpha = targetAlpha; if(targetObj.currentAlpha==undefined){ targetObj.currentAlpha = 100; } if(targetObj.currentAlpha==targetObj.targetAlpha){ return; } if(!targetObj.fading){ if(!targetObj.fader){ targetObj.fader = fader; } targetObj.fading = true; targetObj.fader(); } } // アルファ値をターゲット値ã«è¿‘ã¥ã‘る関数 // ターゲット値ã«ãªã£ãŸã‚‰çµ‚了 function fader(){ this.currentAlpha += (this.targetAlpha - this.currentAlpha)*0.2; if(Math.abs(this.currentAlpha-this.targetAlpha)<1){ this.currentAlpha = this.targetAlpha; this.fading = false; } var alpha = parseInt(this.currentAlpha); this.style.opacity = alpha/100; this.style.filter = 'alpha(opacity='+alpha+')'; if(this.fading){ var scope = this; setTimeout(function(){fader.apply(scope)},30); } } // ã™ã¹ã¦ã®ãƒãƒ¼ãƒ«ã‚ªãƒ¼ãƒãƒ¼ç”»åƒã‚’ã‚’é€æ˜Žã«ã™ã‚‹é–¢æ•°ï¼ˆé·ç§»æ™‚用) function clearRollover(){ for(var i=0,len=rolloverImages.length; i<len; i++){ var image = rolloverImages[i]; image.style.opacity = 0; image.style.filter = 'alpha(opacity=0)'; } } // ã‚¤ãƒ™ãƒ³ãƒˆã‚’è¿½åŠ ã™ã‚‹é–¢æ•° function addEvent(eventTarget, eventName, func){ if(eventTarget.addEventListener){ // モダンブラウザ eventTarget.addEventListener(eventName, func, false); }else if(window.attachEvent){ // IE eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);}); } } addEvent(window,'load',setRollOver2); })();