【薦】JavaScript圖片放大技術(放大鏡)範例程式碼- www.webdm.cn <br/>#magnifier{<br/> width:342px;<br/> height:420px;<br/> :absolute;<br/> top:100px;<br/> left:250px;<br/> font-size:0;<br/> border:1px solid #000;<br/>}<br/>#img{c2002; rowser{ <br/> border:1px solid #000;<br/> z-index:100;<br/> position:absolute;<br/> background:#555;<br/>}<br/>#mag{<br/>: border:#555;<br/>}<br/>#mag{<br/>: border:#555;<br/>}<br/>#mag{<br/>: border:#555;<br/>}<br/>#mag{<br/>: border:1px solid #0集100;<br/>}<br/> <br/>function getEventObject(W3CEvent) {//事件標準化函數<br/> return W3CEvent || window.event;<br/>}<br/>function //相容瀏覽器的滑鼠x,y取得函數<br/> e = e || getEventObject(e);<br/> var x = e.pageX || (e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeftent.body.scrollLeft ));<br/> var y = e.pageY || (e.clientY + (document.documentElement.scrollTop || document.body.scrollTop));<br/> <br/> return { 'x':x,'y':y }; <br/>}<br/>function setOpacity(elem,level) {//相容瀏覽器設定透明值<br/> if(elem.filters) {<br/> elem.style.filter = 'alpha(opacity=' + level * 100 + ')'<br/> + ' } else {<br/> elem.style.opacity = level;<br/> }<br/>}<br/>function css(elem,prop) { //css設定函數,可輕鬆設定為 prop. {<br/> if(i == 'opacity') {<br/> if(i == 'opacity') {<br/> setOpacity(elem,prop[i]);<br/> } else {<br/> elem.style[i] = prop[i]; <br/>var magnifier = {<br/> m : null,<br/> <br/> init:function(magni){<br/> var m = this.m = magni || { 放大後的圖像<br/> mag : null, //放大框<br/> scale : 15 //比例值,設定的值越大放大越大,但是這裡有個問題就是如果不可以整除時,會產生些很小的白邊,目前不知道如何解決<br/> }<br/> <br/> css(m.img,{ <br/> 'position' : 'absolute',<br/> 'width' : (m.cont.W.影像的寬*比例值 <br/> 'height' : (m.cont.clientHeight * m.scale) + 'px' //原始影像的高*比例值<br/> )<br/>. ' : 'none',<br/> 'width' : m.cont.clientWidth + 'px', //m.cont為原始影像,與原始影像等寬<br/> 'height' : m.cont. <br/> 'position' : 'absolute',<br/> 'left' : m.cont.offsetLeft + m.cont.offsetWidth + 10 + 'px',//放大框: m.cont.offsetTop + 'px'<br/> })<br/> <br/> var borderWid = m.cont.getElementsByTagName('div')[0].offsetWidth - m.cont.getElementsByTagName('div')[0].offsetWidth - m.cont.getElementsByTagName('div')[0].offsetWidth - m.cont.getElementsByName('div //取得border的寬<br/> <br/> css(m.cont.getElementsByTagName('div')[0],{ //m.cont.getElementsByTagName('div')[0]為瀏覽框<br/> ', //開始設定為看不見<br/> 'width' : m.cont.clientWidth / m.scale - borderWid + 'px', //原始圖片的寬/比例值- borderWid + 'px', //原始圖片的寬/比例值- b. b. cont.clientHeight / m.scale - borderWid + 'px',//原始圖片的高/比例值- border的寬度<br/> 'opacity' : 0.5//設定透明度<br/> })<br/> cont.getElementsByTagName('img')[0].src;//讓原始影像的src值給予放大影像<br/> m.cont.style.cursor = 'crosshair';<br/> <br/>. m.cont.onmouseover = magnifier. <br/><br/> },<br/> <br/> start:function(e){<br/> <br/> if(document.all){///只在IE下執行,主要避免IE6的select無法覆蓋 <br/> <br/> this.onmousemove = magnifier.move;//this指向m.cont<br/> this.onmouseout = magnifier.end;<br/> },素@ /事件標準化<br/> <br/> this.getElementsByTagName('div')[0].style.display = '';<br/> <br/> css(this.getElementsByTagName('div')[0],{<br/>. max(pos.y - this.offsetTop - parseInt(this.getElementsByTagName('div')[0].style.height) / 2,0),this.clientHeight - this.getElementsByTagName('div')[0]. offsetHeight) + 'px',<br/> 'left' : Math.min(Math.max(pos.x - this.offsetLeft - parseInt(this.getElementsByTagName('div')[0].style.width) / 2,0 ),this.clientWidth - this.getElementsByTagName('div')[0].offsetWidth) + 'px' //left=滑鼠x - this.offsetLeft - 瀏覽框寬/2,Math.max和Math.min讓瀏覽框不會超出影像<br/> })<br/> <br/> magnifier.m.mag.style.display = '';<br/> <br/> css(magnifier.m.img,{<br/><br/> css(magnifier.m.img,{<br/><br/> cs, )[0].style.top) * magnifier.m.scale) + 'px',<br/> 'left' : - (parseInt(this.getElementsByTagName('div')[0].style.left) * magnifier.m .scale) + 'px'<br/> })<br/> <br/> },<br/> <br/> end:function(e){<br/> this.getElementsByTagName(')[0]。 .m.img); //銷毀iframe<br/> <br/> magnifier.m.mag.style.display = 'none';<br/> },<br/> <br/> createIframe:function(elm){com ;<br/> layer.tabIndex = '-1';<br/> layer.src = 'javascript:false;';<br/> elem.parentNode.appendChild(layer);<br/> layer.style.height = elem.offsetHeight + 'px';<br/> },<br/> <br/> removeIframe:function(elem){<br/> var layers = elem.parentNode.getElementsByywg; {<br/> layers[0].parentNode.removeChild(layers[0]);<br/> }<br/> }<br/>}<br/>window.onload = function(){ magnifier.init({gety). ), <br/> img : document.getElementById('magnifierImg'),<br/> mag : document.getElementById <br/>}<br/> select測驗 是否能覆蓋