jfMagnify是一款可以放大任何HTML元素的jQuery放大镜插件。该放大镜插件不仅可以放大图片,还可以放大任何的HTML元素,例如超链接,文本等。

该放大镜插件的原理是通过克隆元素和它的子元素,并将克隆的元素进行放大应用到放大镜中。

使用方法

使用该放大镜插件需要在页面中引入jquery和jquery.jfMagnify.js以及jquery UI文件。

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.js"></script>
<script type="text/javascript" src="js/jquery.jfMagnify.js"></script>                  
                
HTML结构

放大镜效果中的所有元素都要放置在一个容器中进行管理。

<div class="magnify">
    <div class="magnify_glass"></div>
    <div class = "element_to_magnify">
        <img src="image1.jpg" draggable="false"/>
    </div>
</div>              
                
CSS样式

你需要为该放大镜添加下面的必要的CSS样式:

.magnify {
    position: relative;
    width: 900px;
    height: 675px;
}
.magnify_glass {
    z-index: 100;
    position: absolute;
    overflow: hidden;
}
.element_to_magnify {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
}
#elementBeingMagnified {

}
.magnified_element {

}                  
                
初始化插件

在页面DOM元素加载完毕之后,你可以通过jfMagnify()方法来初始化该放大镜插件。

$(".magnify").jfMagnify();                
                

配置参数

  • center:居中放大区域。可选值还有:top和left,默认值为true。
  • scale:放大倍数,默认是2X。
  • containment:定义放大镜的容器。默认是它的直接父元素。
  • magnifyGlass:定义放大镜元素。默认是.magnify_glass
  • magnifiedElement:被克隆元素的额外class名称。可以在css中通过该class来找到该元素。默认为.magnified_element
  • magnifiedZone:你希望放大的元素所在的区域。默认是.magnify_glass
  • elementToMagnify:要放大的元素。默认是.element_to_magnify

例如可以如下所示在初始化时传入配置参数:

$(".magnify").jfMagnify({
    center: true,
    scale:2,
    containment:'magnify',
    magnifyGlass : '.magnify_glass',
    magnifiedElement: '.magnified_element',
    magnifiedZone:'.magnify_glass',
    elementToMagnify : '.element_to_magnify',
});                  
                

所有的配置参数也可以在父容器中使用data-*属性来设定。

<div class="magnify" 
    data-center = "true"
    data-scale ="2"
    data-containment =".magnify"
    data-magnify-glass = ".magnify_glass"
    data-magnified-element = ".magnified_element"
    data-magnified-zone =".magnify_glass"
    data-element-to-magnify = ".element_to_magnify" >                  
                

方法

  • destroy():销毁插件。
    $(".magnify").data("jfMagnify").destroy();
    
  • scaleMe(number):动态增加或减少放大倍数。
    var scaleNum = 2;
    $('.plus').click(function(){
        scaleNum += .5;
        if (scaleNum >=3) {
            scaleNum = 3;
        };
        $(".magnify").data("jfMagnify").scaleMe(scaleNum);
    });
    
  • update():该方法用于更新或移动放大镜。
    $('.magnify_glass').animate({
        'top':'60%',
        'left':'60%'
        },{
        duration: 1200, 
        progress: function(){
            $(".magnify").data("jfMagnify").update();
        }, 
        ease: "easeInQuint"
    });
    

jfMagnify放大镜插件的github地址为:https://github.com/fonstok/jfMagnify