<div class="codetitle"> <span><a style="CURSOR: pointer" data="21928" class="copybut" id="copybut21928" onclick="doCopy('code21928')"><u>코드 복사</u></a></span> 코드는 다음과 같습니다.</div> <div class="codebody" id="code21928"> <br><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <br><html xmlns="http://www.w3.org/1999/xhtml"> <br><머리> <br><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <br><title>JavaScript图文放大技术(放大镜)实现代码分享 - www.jb51.net</title> <br><style type="text/css"> <br>#돋보기{ <br> 너비:342px; <br> 높이:420px; <br> 위치:절대; <br> 상단:100px; <br> 왼쪽:250px; <br> 글꼴 크기:0; <br> 테두리:1px 실선 #000; <br>} <br>#img{ <br> 너비:342px; <br> 높이:420px; <br>} <br>#Browser{ <br> border:1px solid #000; <br> z-색인:100; <br> 위치:절대; <br> 배경:#555; <br>} <br>#mag{ <br> border:1px solid #000; <br> 오버플로:숨김; <br> z-색인:100; <br>} <br></style> <br><script type="text/javascript"> <br>함수 getEventObject(W3CEvent) {//事件标准化函数 <br> return W3CEvent || 창.이벤트; <br>} <br>함수 getPointerPosition(e) {//兼容浏览器的鼠标x,y获得函数 <br> e = e || getEventObject(e); <br> var x = e.pageX || (e.clientX (document.documentElement.scrollLeft || document.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 = 수준; } <br>} <br> 함수 CSS (elem, prop) {// css 设置函数, 可以方便设置 css 值, 并且兼容设置透明值 <br> for (var i in prop) {<br> if(i == 'opacity') { <br> setOpacity(elem,prop[i]); <br> } else { <br> elem.style[i] = prop[i]; <br> } <br> } <br> 요소 반환; <br>} <br>var magnifier = { <br> m : null, <br><br> init:function(magni){ <br> var m = this.m = magni || { <br> cont : null, //装载하라始图이미지적 div <br> img : null, //큰 이미지 <br> mag : null, //放 : 15 //比例值,设置的值越大放大越大, 但是这里有个问题就是如果不可以整除时,会产生些很작은白边,目前不知道如何解决 <br> } <br><br> CSS(m.img, { <br> '위치' : '절대', <br> '너비' : (m.cont.clientWidth * m.scale) 'px', //원래始图이미지宽*比例值 <br> '높이': (m.cont.clientHeight * m.scale) 'px' //원래始图이미지상 高*比例值 <br> }) <br><br> css(m.mag,{ <br> 'display' : 'none', <br> 'width' : m.cont.clientWidth 'px', //m.cont는 원본 이미지입니다. , 원본 이미지와 동일한 너비 <br> 'height' : m.cont.clientHeight 'px', <br> 'position' : 'absolute', <br> 'left' : m.cont.offsetLeft m.cont. offsetWidth 10 'px', //확대 상자의 위치는 원본 이미지에서 오른쪽으로 10px입니다. <br> 'top' : m.cont.offsetTop 'px'<br> }) <br><br> var borderWid = m.cont .getElementsByTagName('div')[0].offsetWidth - m.cont.getElementsByTagName('div')[0].clientWidth; //테두리 너비 가져오기 <br><br> css( m.cont.getElementsByTagName(' div')[0],{ //m.cont.getElementsByTagName('div')[0]은 탐색 상자<br>번째'입니다: m.cont.clientWidth / m.scale - borderWid 'px', 사용 사용 사용 아웃 웨이트 아웃 '' out together out together'' out'' through''''''''''''''''''''ceisece togethercececece together's 'cel togetherce out clean outce out clean outce outce clean outce outce outce outce outce outce outce outce out out outce out out out out of sss out's out's' out'-'그는'-'그는''될 것입니다- be-besss's--to be to trespasses to be t. // 원본 그림의 높이-테두리의 너비 <br> '불투명도': 0.5 // 투명도 설정 <br>}) <br> <br> m.img.src = m.cont.getelementsbytagname ('' '' 'img')[0].src;//확대된 이미지에는 원본 이미지의 src 값을 부여합니다 <br> m.cont. style.cursor = 'crosshair'; <br><br> m.cont.onmouseover = magnifier.start ; <br><br> }, <br><br> start:function(e){ <br><br> if(document.all){//IE6의 선택 항목을 덮어쓸 수 없는 것을 방지하기 위해 IE에서만 실행됩니다. <br> magnifier.createIframe(magnifier.m.img) <br><br> } <br><br> this.onmousemove = magnifier.move;//this는 m.cont를 가리킵니다 <br> this.onmouseout = magnifier.end; <br> }, <br><br> move:function(e){ <br> var pos = getPointerPosition(e); //이벤트 정규화<br><br> this.getElementsByTagName('div')[0] .style.display = '' <br><br> css(this.getElementsByTagName(' div')[0],{ <br> 'top' : Math.min(Math.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=mouse x - this.offsetLeft - 탐색 상자 너비/2, Math.max 및 Math.min은 탐색 상자가 이미지를 초과하지 않도록 합니다<br> }) <br><br> magnifier.m.mag.style.display = '' ; <br><br> css(magnifier.m.img,{ <br> 'top' : - (parseInt(this.getElementsByTagName ('div')[0].style.top) * magnifier.m.scale) 'px', <br> '왼쪽': - (parseInt(this.getElementsByTagName('div')[0].style.left ) * magnifier.m.scale) 'px'<br> , <br><br> end:function(e){ <br> this.getElementsByTagName('div')[0].style.display = 'none'; <br> magnifier.removeIframe(magnifier.m.img); //销毁iframe <br><br> magnifier.m.mag.style.display = 'none'; <br> }, <br><br> createIframe:function(elem){ <br> var layer = document.createElement('iframe'); <br> layer.tabIndex = '-1'; <br> layer.src = 'javascript:false;'; <br> elem.parentNode.appendChild(레이어); <br><br> layer.style.width = elem.offsetWidth 'px'; <br> layer.style.height = elem.offsetHeight 'px'; <br> }, <br><br> RemoveIframe:function(elem){ <br> varlayer = elem.parentNode.getElementsByTagName('iframe'); <br> while(layers.length >0){ <br> layers[0].parentNode.removeChild(layers[0]); <br> } <br> } <br>} <br>window.onload = function(){ <br> magnifier.init({ <br> cont : document.getElementById('돋보기') img: document.getElementById('magnifierImg'), <br> mag : document.getElementById('mag'), <br> 규모 : 3 <br> }); <br>} <br></script> <br></head> <br><본문> <br><div id="돋보기"> <br><img src="http://www.jb51.net/images/20091107/fangda.jpg" id="img" /> <br><div id="브라우저"></div> <br></div> <br><div id="mag"><img id="magnifierImg" /></div> <br><스타일 선택="위치:absolute;top:200px;왼쪽:650px;너비:100px;"> <br><option>select测试</option> <br><option>是否能覆盖</option> <br></select> <br></body> <br></html> <br><br><br> </div>