http://www.liyi99.com/giftview6185.html
是两张一大一小的照片还是就一张照片啊?
讲原理就好了,代码简练啊?别人的代码太复杂了

解决方案 »

  1.   


    1.<html xmlns="http://www.w3.org/1999/xhtml">   
    2.<head>   
    3.<title>JS+CSS实现图片放大预览效果(js图片放大预览鼠标滑过的任意位置)_365CSS.CN</title>   
    4.<script language="JavaScript">   
    5.<!--   
    6.var srcX = 1024; //原图大小,可以任意设置   
    7.var srcY = 768;   
    8.var bigX = 300; //预览窗大小,可以任意设置   
    9.var bigY = 225;   
    10.var smallX = 300; //缩略图宽度   
    11.var smallY = srcY * smallX / srcX;   
    12.var viewX = bigX / srcX * smallX; //预览范围   
    13.var viewY = bigY / srcY * smallY;   
    14.var bl = srcX / smallX;//缩小比例   
    15.var border = 1; //边框   
    16.window.onload=function (){   
    17.        head.innerHTML="JS+CSS实现图片放大预览效果,鼠标可以滑动图片任意地方";   
    18.        smallpic.width=smallX;   
    19.        smallpic.height=smallY;   
    20.        bigpic.width=srcX;   
    21.        bigpic.height=srcY;   
    22.        view.style.width=viewX;   
    23.        view.style.height=viewY;   
    24.        smallbox.style.borderWidth=border;   
    25.        bigbox.style.borderWidth=border;   
    26.        if (window.event){   
    27.                smallbox.style.width=smallpic.offsetWidth+border*2;   
    28.                smallbox.style.height=smallpic.offsetHeight+border*2;   
    29.                bigbox.style.width=bigX+border*2;   
    30.                bigbox.style.height=bigY+border*2;   
    31.        }else{   
    32.                smallbox.style.width=smallpic.offsetWidth;   
    33.                smallbox.style.height=smallpic.offsetHeight;   
    34.                bigbox.style.width=bigX;   
    35.                bigbox.style.height=bigY;   
    36.        }   
    37.        move(event);   
    38.}   
    39.function move(e){   
    40.        var e = window.event?window.event:e;   
    41.        //alert(e)   
    42.        var iebug = 0;   
    43.        if (window.event){   
    44.                var vX = e.offsetX - viewX/2;   
    45.                var vY = e.offsetY - viewY/2;   
    46.        }else{   
    47.                var vX = e.pageX - viewX/2 - smallbox.offsetLeft - border;   
    48.                var vY = e.pageY - viewY/2 - smallbox.offsetTop - border;   
    49.                iebug = 2;   
    50.        }   
    51.        if (vX < 0) vX = 0;   
    52.        if (vY < 0) vY = 0;   
    53.        if (vX > smallX - viewX - iebug) vX = smallX - viewX - iebug;   
    54.        if (vY > smallY - viewY - iebug) vY = smallY - viewY - iebug;   
    55.        bigpico.style.marginLeft = - vX * bl    
    56.        bigpico.style.marginTop = - vY * bl    
    57.        view.style.left = vX + smallbox.offsetLeft + border;   
    58.        view.style.top = vY + smallbox.offsetTop + border;   
    59.}   
    60.//-->   
    61.</script>   
    62.<style type="text/css">   
    63.<!--   
    64.*{padding:0;margin:0}   
    65.img{display:block;}  
    66.#smallbox{border:1px #c33 solid;float:left;width:0;height:0;overflow:hidden}  
    67.#bigbox{border:1px #c33 solid;width:0px;height:0px;float:left;overflow:hidden}  
    68.#view{border:1px #ddd solid;width:0px;height:0px;position:absolute}  
    69.#head{text-align:center;line-height:40px;font:bold 16px/40px;color:red}   
    70.  
    71.//-->   
    72.</style>   
    73.  
    74.<body>   
    75.<div id="head"></div>   
    76.<div id="smallbox"><img src="http://www.365css.cn/example/tupianfangdayulan/1.jpg" name="smallpic" width="300" height="300" border="0" id="smallpic" onmousemove="move(event)" onmouseover="document.getElementById('bigbox').style.display='';document.getElementById('view').style.display=''" onmouseout="document.getElementById('bigbox').style.display='none';document.getElementById('view').style.display='none'"></div>   
    77.  
    78.<div id="bigbox" style="display:none"><div id="bigpico"><img src="http://www.365css.cn/example/tupianfangdayulan/1.jpg" name="bigpic" width="300" height="300" border="0" id="bigpic"></div>   
    79.</div>   
    80.<div id="view" onmousemove="move(event) "style="display:none"></div>   
    81.  
    82.</body>   
    83.</html>
      

  2.   

    楼上的原理讲得很清楚了。
    我以前刚学js的时候也写过一段垃圾,本地保存为hta可看到效果。
    <html><body oncontextmenu="return false;" scroll="no">
    <style type="text/css">
    * {
    margin:0px;
    padding:0px;
    border:0px;
    }
    </style><div id="div1">
    <img src="1.jpg" id="img1" title="双击放大,右键恢复!"></img>
    </div>
    <div id="div2">
    <b>每次放大倍数:</b>
    <select id="slt1">
    <option value="2.0">2.0倍</option>
    <option value="2.5">2.5倍</option>
    <option value="3.0">3.0倍</option>
    <option value="3.5">3.5倍</option>
    <option value="4.0" selected>4.0倍</option>
    </select>
    <label id="l1">当前倍数:<u><b>1</u></b></label>
    </div><script type="text/javascript">
    /**************************************************************
    //脚本开始
    **************************************************************/
    function $(id){return document.getElementById(id);}function window.onload()
    {
    with($("div1").style)
    {
    position = "absolute";
    overflow = "hidden";
    left = "35%";
    top = "10%";
    width = "60%";
    height = "60%";
    border = "1px solid #FFFF00"
    }
    with($("div2").style)
    {
    position = "absolute";
    left = "35%";
    top = "70%";
    width = "60%";
    border = "1px dotted #000000";
    }
    $("img1").oncontextmenu();
    }/**************************************************************
    //处理放大
    **************************************************************/
    $("img1").ondblclick = function()
    {
    var x,y;
    var imul = parseFloat($("slt1").value);
    var ps = this.parentNode;
    with(this.style)
    {
    if(this.offsetWidth / ps.offsetWidth * imul > 200)return; pixelWidth *= imul;
    pixelHeight *= imul;
    x = ps.offsetWidth / 2 - event.offsetX * imul;
    y = ps.offsetHeight / 2 - event.offsetY * imul;
    pixelLeft = Math.max(Math.min(0,x),ps.offsetWidth - this.offsetWidth);
    pixelTop = Math.max(Math.min(0,y),ps.offsetHeight - this.offsetHeight);

    $("l1").innerHTML = "当前倍数:<u><b>" + Math.ceil(pixelWidth / ps.offsetWidth) + "</u></b>";
    }
    }
    /**************************************************************
    //拖动
    **************************************************************/
    var ox,oy;
    $("img1").onmousedown = function()
    {
    ox = event.clientX;
    oy = event.clientY;
    this.setCapture();
    this.attachEvent("onmousemove",myMove);
    }function myMove()
    {
    var x,y;
    with($("img1").style)
    {
    var ps = $("img1").parentNode.style;
    x = pixelLeft - ox + event.clientX;
    y = pixelTop - oy + event.clientY;
    pixelLeft = Math.max(Math.min(0,x),ps.pixelWidth - pixelWidth);
    pixelTop = Math.max(Math.min(0,y),ps.pixelHeight - pixelHeight);
    ox = event.clientX;
    oy = event.clientY;
    }
    }$("img1").onmouseup = function()
    {
    this.detachEvent("onmousemove",myMove);
    this.releaseCapture();
    }
    /**************************************************************
    //初始化img1
    **************************************************************/
    $("img1").oncontextmenu = function()
    {
    with(this.style)
    {
    position = "absolute";
    left = "0px";
    top = "0px";
    width = "100%";
    height = "100%";
    cursor = "move";
    $("l1").innerHTML = "当前倍数:<u><b>1</u></b>"; }
    }</script></body></html>