真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

用js實(shí)現(xiàn)放大鏡的效果

    

成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、仙游網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為仙游等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

第一次發(fā)博客,還有點(diǎn)小激動(dòng),本人現(xiàn)在正在天津上大學(xué),希望以后從事前端這一行業(yè),學(xué)習(xí)的時(shí)間不長(zhǎng),寫博客為了記錄自己的學(xué)習(xí)過程和收獲,當(dāng)然也算是鞏固??赡軐懙臇|西不會(huì)像大牛那樣高大上,只是一些基本的內(nèi)容,當(dāng)然我也會(huì)收藏一些我認(rèn)為好的,不錯(cuò)的文章(其實(shí)最主要是我能看懂。。。。)。我相信以后自己也能夠?qū)懗龈叽笊系臇|西。加油!

廢話說的有點(diǎn)多,說正事。前幾天看了一段潭州教育的教學(xué)視頻,其中的老師是用JQuery實(shí)現(xiàn)放大鏡的效果(老師講的是在是太慢,各種亂扯,跳著看的)。由于我還沒有好好的學(xué)習(xí)過JQuery,但是那些基本的代碼還是可以看懂的,所以就想拿現(xiàn)在正在學(xué)習(xí)的js練一下手,最后還是成功的實(shí)現(xiàn)了這個(gè)效果。

思路:先讓move塊和bimg塊隱藏,當(dāng)鼠標(biāo)移動(dòng)到box上時(shí),使move塊和bimg塊顯示,獲取鼠標(biāo)當(dāng)前的位置,然后經(jīng)過計(jì)算給與move塊和bimg塊適當(dāng)?shù)闹祵?shí)現(xiàn)放大鏡效果(move塊和bimg塊的位置的計(jì)算后面有詳細(xì)介紹)

用js實(shí)現(xiàn)放大鏡的效果


    
    放大鏡
    
    
    
        
        
                              
    

用js實(shí)現(xiàn)放大鏡的效果

css樣式:

用js實(shí)現(xiàn)放大鏡的效果

*{
    margin:0px;
    padding:0px;
}
#box{
    width:430px;
    height:430px;
    margin:100px;
    margin-left:17%;
    position:relative;//這里使用相對(duì)定位,好讓其他的元素能依靠這個(gè)元素定位
}
#move{
    background-p_w_picpath:url(../p_w_picpaths/move.png);
    width:220px;
    height:220px;
    position:absolute;
    left:0px;
    top:0px;
    display:none;//先讓他隱藏,用js使其顯示
}
#bimg{
    width:430px;
    height:430px;
    overflow:hidden;
    position:absolute;
    top:0px;
    left:450px;
    display:none;//先讓他隱藏,用js使其顯示
}
#bimg img{
    width:800px;
    height:800px;
    position:absolute;
    top:0px;
    left:0px;
}

用js實(shí)現(xiàn)放大鏡的效果

Javascript:

用js實(shí)現(xiàn)放大鏡的效果

 bigimg(){     bbox = document.getElementById("box");     bmove = document.getElementById("move");     bbimg = document.getElementById("bimg");     b_bimg = document.getElementById("b_bimg");
    bbox.onmouseover = (){
        bbimg.style.display = "block";
        bmove.style.display="block";
    }
    bbox.onmouseout = (){
        bbimg.style.display = "none";
        bmove.style.display="none";
    }
    bbox.onmousemove = (e){
         x = e.clientX;
         y = e.clientY;         t = bbox.offsetTop;
         l = bbox.offsetLeft;         _left = x - l - bmove.offsetWidth/2;//計(jì)算move的位置         _top = y - t -bmove.offsetHeight/2;        (_top<=0)
            _top = 0;         (_top>=bbox.offsetHeight-bmove.offsetHeight)
            _top = bbox.offsetHeight-bmove.offsetHeight ;        (_left<=0)
            _left=0;         (_left>=bbox.offsetWidth-bmove.offsetWidth)
            _left=bbox.offsetWidth-bmove.offsetWidth ;
        bmove.style.top = _top +"px";
        bmove.style.left = _left  + "px";         w = _left/(bbox.offsetWidth-bmove.offsetWidth);//計(jì)算移動(dòng)的比例         h = _top/(bbox.offsetHeight-bmove.offsetHeight);         b_bimg_top = (b_bimg.offsetHeight-bbimg.offsetHeight)*h;
         b_bimg_left = (b_bimg.offsetWidth-bbimg.offsetWidth)*w;
        b_bimg.style.top = -b_bimg_top + "px";
        b_bimg.style.left = -b_bimg_left + "px";
    }
        
}

用js實(shí)現(xiàn)放大鏡的效果

效果圖:

用js實(shí)現(xiàn)放大鏡的效果

1、move塊的計(jì)算

用js實(shí)現(xiàn)放大鏡的效果

黑色箭頭:

var x = e.clientX;//鼠標(biāo)相對(duì)于視口的位置var y = e.clientY;

紅色箭頭:

var t = bbox.offsetTop;//box相對(duì)于視口的位置var l = bbox.offsetLeft;

橙色箭頭:

var _left = x - l - bmove.offsetWidth/2;//計(jì)算move的位置var _top = y - t -bmove.offsetHeight/2;

 

2、bimg塊的計(jì)算

利用move塊在可移動(dòng)范圍內(nèi)的比例來設(shè)置大圖的位置

move塊的移動(dòng)范圍:

bbox.offsetWidth-bmove.offsetWidth

move塊現(xiàn)在的坐標(biāo)占可移動(dòng)范圍的比例:

var w = _left/(bbox.offsetWidth-bmove.offsetWidth);//計(jì)算移動(dòng)的比例var h = _top/(bbox.offsetHeight-bmove.offsetHeight);

bimg的移動(dòng)范圍:

b_bimg.offsetHeight-bbimg.offsetHeight

bimg的位置:

var b_bimg_top = (b_bimg.offsetHeight-bbimg.offsetHeight)*h;//計(jì)算大圖的位置var b_bimg_left = (b_bimg.offsetWidth-bbimg.offsetWidth)*w;

 

限制move塊移動(dòng)范圍的內(nèi)容簡(jiǎn)單,在介紹move塊的計(jì)算中以涉及到了,就不在多說。這樣簡(jiǎn)單的放大鏡效果就實(shí)現(xiàn)了。

 

                                       

 


分享名稱:用js實(shí)現(xiàn)放大鏡的效果
網(wǎng)站地址:http://weahome.cn/article/pgeocs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部