====== Popup the image on which a mouse is rolled over ====== mouseの位置を取るjavascriptを利用して、あるイメージをpopupさせる方法を紹介する。 簡単だから、コードを見ながら説明する。 function showPopUp(id, e) { e = e || window.event; var cursor = {x:0, y:0}; if (e.pageX || e.pageY) { cursor.x = e.pageX; cursor.y = e.pageY; }else { //IE var de = document.documentElement; //Strict Mode(offset=2,2) var b = document.body; //Quirks Mode(offset=0,0) cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0); cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0); } picLayer = document.getElementById(id); var picWidth = picLayer.clientWidth; var picHeight = picLayer.clientHeight; if (picLayer.style.visibility.charAt(0) == "v") return; picLayer.style.visibility = "visible"; var xOffset = getWinXOffset(); var yOffset = getWinYOffset(); picLayer.style.left = xOffset+cursor.x- (picWidth+15); picLayer.style.top = yOffset+cursor.y- (picHeight+50); } 前半部分は[[study:javascript:event|Mouse cursor position]]で説明したので、参考してほしい。\\ ここで'id'という引数はイメージファイルのidで、レイヤーに囲んでくれれば良い。\\ 肝心なのはmouseの座標を取り、イメージのサイズを考慮して表示するということである。\\ その際、**visibility**属性を'visible'で変えることを忘れずに;-)\\ ちなみに、**%%getWinXOffset()%%**,**%%getWinYOffset()%%**はWindowのoffsetのx座標、y座標を計算して返すメソッドである。\\ {{keywords>popup image}} ===== Get the offset of window ===== xOffsetの取得 function getWinXOffset(){ if(window.scrollX) return window.scrollX; // Moziila if(window.pageXOffset) return window.pageXOffset; // Opera, NN4 if(document.documentElement && document.documentElement.scrollLeft){ // 以下 IE return document.documentElement.scrollLeft; }else if(document.body && document.body.scrollLeft){ return document.body.scrollLeft; } return 0; } yOffsetの取得 function getWinYOffset(){ if(window.scrollY) return window.scrollY; // Mozilla if(window.pageYOffset) return window.pageYOffset; // Opera, NN4 if(document.documentElement && document.documentElement.scrollTop){ // 以下 IE return document.documentElement.scrollTop; //Strict Mode }else if(document.body && document.body.scrollTop){ return document.body.scrollTop; //Quirks Mode } return 0; }