JQuery插件-放大镜特效

一.HTML代码:

<div class="demo">
        <div id="box">
            <div id="small-box">
                <div id="float-box"></div>
                <img src="../images/bimg_big.jpg"/>
            </div>
            <div id="big-box">
                <img src="../images/bimg_big.jpg"/>
            </div>
        </div>
</div>

在div demo中存放两个div,其中small-box用来存放小图片和放大镜区域,big-box用来存放大图片。而放大图片的原理就是以小图片上的放大镜的位置,来定位大图片的移动和显示部分区域,来达到放大的效果。

二.js代码

1.首先大图片是隐藏的,只有当鼠标移动到小图片上时,小图的放大镜区域显示,大图对应的区域也显示

//鼠标移入显示,移出隐藏
smallBox.hover(
function(){
floatBox.show();
bigBox.show();
},
function(){
floatBox.hide();
bigBox.hide();
}
)

2.当鼠标在小图上移动时,小图上的放大镜跟着移动

smallBox.mousemove(function(ev){
        var _event=ev || window.event;

        var left=_event.clientX-box.offset().left-floatBox.width()/2;
        var top=_event.clientY-box.offset().top-floatBox.height()/2;

        floatBox.css(‘left‘,left+‘px‘);
        floatBox.css(‘top‘,top+‘px‘);
    })

3.如下图计算放大镜在小图上移动的位移,对应算出大图片应该移动的位移。(图片和内容来源于幕课网)

//放大镜移动定位大图的位置放大图片
        var bigImgX=left/(smallBox.width()-floatBox.width()) * (bigBoxImg.width()-bigBox.width());
        var bigImgY=top/(smallBox.height()-floatBox.height()) * (bigBoxImg.height()-bigBox.height());

        bigBoxImg.css(‘left‘,-bigImgX+‘px‘);
        bigBoxImg.css(‘top‘,-bigImgY+‘px‘);

3.限制放大镜区域在小图上移动的边界,不超出小图的范围

if(left<0){
            left=0;
        }
        else if(left>(smallBox.width()-floatBox.width())){
            left=smallBox.width()-floatBox.width();
        }
        if(top<0){
            top=0;
        }
        else if(top>(smallBox.height()-floatBox.height())){
            top=smallBox.height()-floatBox.height();
        }

三、附上JQuery插件-放大镜特效的源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>放大镜特效</title>
    <style>
        * {
            margin: 0;
            padding: 0
        }
        img{
            vertical-align: top;
        }
        #box {
            display: block;
            width: 400px;
            height: 255px;
            margin: 50px;
            position: relative;
            border: 1px solid #ccc;
        }

        #small-box {
            position: relative;
            z-index: 1;
        }

        #float-box {
            display: none;
            width: 160px;
            height: 120px;
            position: absolute;
            background: #ffffcc;
            border: 1px solid #ccc;
            filter: alpha(opacity=50);
            opacity: 0.5;
        }

        #big-box {
            display: none;
            position: absolute;
            top: 0;
            left: 460px;
            width: 400px;
            height: 300px;
            overflow: hidden;
            border: 1px solid #ccc;
            z-index: 1;
        }

        #big-box img {
            position: absolute;
            z-index: 5
        }
    </style>
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="demojq.js"></script>
</head>
<body>
    <div class="demo">
        <div id="box">
            <div id="small-box">
                <div id="float-box"></div>
                <img src="../images/macbook-small.jpg"/>
            </div>
            <div id="big-box">
                <img src="../images/macbook-big.jpg"/>
            </div>
        </div>
</div>
</body>
<script type="text/javascript">
    $(function(){
        $(‘.demo‘).magnifier(
            {
                box :‘#box‘,
                smallBox:‘#small-box‘,
                floatBox:‘#float-box‘,
                bigBox:‘#big-box‘,
                bigBoxImg:‘#big-box img‘
            }
        )
    })
</script>
</html>

html

$(function(){
    $.fn.magnifier = function(data){
        var set={
            ‘box‘ : ‘.box‘,
            ‘smallBox‘ : ‘.small-box‘,
            ‘floatBox‘ : ‘.float-box‘,
            ‘bigBox‘ : ‘.big-box‘,
            ‘bigBoxImg‘ : ‘.big-box img‘
        }
        var obj=$.extend({},set,data);

        //鼠标移入显示,移出隐藏
        $(obj.smallBox).hover(
            function(){
                $(obj.floatBox).show();
                $(obj.bigBox).show();
            },
            function(){
                $(obj.floatBox).hide();
                $(obj.bigBox).hide();
            }
        )

        //鼠标移动放大镜跟着移动
        $(obj.smallBox).mousemove(function(ev){
            var _event=ev || window.event;

            var left=_event.clientX-$(obj.box).offset().left-$(obj.floatBox).width()/2;
            var top=_event.clientY-$(obj.box).offset().top-$(obj.floatBox).height()/2;

            if(left<0){
                left=0;
            }
            else if(left>($(obj.smallBox).width()-$(obj.floatBox).width())){
                left=$(obj.smallBox).width()-$(obj.floatBox).width();
            }
            if(top<0){
                top=0;
            }
            else if(top>($(obj.smallBox).height()-$(obj.floatBox).height())){
                top=$(obj.smallBox).height()-$(obj.floatBox).height();
            }
            $(obj.floatBox).css(‘left‘,left+‘px‘);
            $(obj.floatBox).css(‘top‘,top+‘px‘);

            //放大镜移动定位大图的位置放大图片
            var bigImgX=left/($(obj.smallBox).width()-$(obj.floatBox).width()) * ($(obj.bigBoxImg).width()-$(obj.bigBox).width());
            var bigImgY=top/($(obj.smallBox).height()-$(obj.floatBox).height()) * ($(obj.bigBoxImg).height()-$(obj.bigBox).height());

            $(obj.bigBoxImg).css(‘left‘,-bigImgX+‘px‘);
            $(obj.bigBoxImg).css(‘top‘,-bigImgY+‘px‘);
        })
    }
})

js

四、注:(放大镜区域/小图片)=(放大区域/大图片),因此可以根据小图片,放大镜区域和放大区域算出大图片的大小,这样才能等比例放大

时间: 2024-10-26 22:12:04

JQuery插件-放大镜特效的相关文章

jQuery轻量级简单实用的图片放大镜特效

zoomtoo是一款轻量级的简单实用的jQuery图片放大镜特效插件.这个图片放大镜特效在鼠标滑过图片的时候,在原来图片区域内部将图片放大.鼠标进入和离开图片区域时都带有淡入淡出的效果. 浏览器兼容: Firefox 2+ (Win, Mac, Linux) IE7+ (Win) Chrome 6+ (Win, Mac, Linux, Android, iPhone) Safari 3.2+ (Win, Mac, iPhone) Opera 8+ (Win, Mac, Linux, Androi

jquery插件jqzoom放大镜插件特效代码分享

原文:jquery插件jqzoom放大镜插件特效代码分享 源代码下载地址:http://www.zuidaima.com/share/1550463469554688.htm 放大镜插件效果是当前电子商务系统的一个不可缺的部分,值得学习哦 代码截图:

自己编写jQuery插件 之 放大镜

之所以写这个插件是因为前段时间在一个站点上看到了这个应用,当时觉得挺好玩的,就想自己实现一个,在网上查了资料后,借鉴别人的代码,实现如下.看下效果图吧: 1.>小图 2.>大图(实际尺寸比下面这张图要大,下面这张图是我截的小尺寸图) 3.>放大镜效果 第三张图就是放大镜效果.这两张图也还是从别人网站copy下来的,给出站点网址:http://www.cunqianguan.me/ 你可以直接访问该网址看下实际效果.希望该站长别介意才好..... 插件实现代码如下: (function (

14种网页jQuery和css3特效插件代码演示

1.网页table增删样式代码 演示和下载地址 2.jQuery左右滑动幻灯片插件 演示和下载地址 3.jQuery文字轮播焦点图 演示和下载地址 4.网页文字焦点图切换 演示和下载地址 5.jQuery a标签锚链滚动特效 演示和下载地址 6.css3自适应导航菜单栏 演示和下载地址 7.jQuery 100计时特效代码 演示和下载地址 8.html5视频播放器自定义美化代码 演示和下载地址 9.网页右侧悬浮滚动特效代码 下载和演示地址 10.网页能拖拽图层移动的js代码 演示和下载地址 11

【原创】jQuery插件 - Booklet翻书特效教程(一) 一般设置

jQuery插件 - Booklet翻书特效教程(一) 一般设置 本文由五月雨恋提供,转载请注明出处. 一.宽高(width/height) 1.自定义大小 $(function(){ // 自定义页面大小 单位默认px 注意不要带单位px! $('#mybook1').booklet({ width:  600,// 不要带单位px! height: 200// 不要带单位px! }); }); 2.百分比 $(function(){ // 自定义页面大小 使用百分比 $('#mybook2'

jQuery 插件 evenZoom 放大镜

evenZoom 放大镜 evenZoom 是一款放在镜插件,可以实现商城中放大图片的功能. 在下载github的地址是 https://github.com/no1lov3sme/evenZoom 再到jQuery网站中下载样式:http://code.jquery.com/jquery-1.6.3.min.js 第一步:引入jQuery 1 <script type="text/javascript" src="js/jquery-1.6.3.min.js"

jquery插件cloud-zoom(放大镜)

效果预览:http://www.helloweba.com/demo/cloud-zoom/ 源代码下载:http://pan.baidu.com/s/1eQnadXo Cloud Zoom是一个图像放大jQuery插件,效果堪比Magic Zoom.相对于流行jQZoom插件,Cloud Zoom体积小,有更多的功能和更强大的跨浏览器兼容性. 查看演示 特点 兼容大多数浏览器,(已经测试通过的浏览器有:IE6+, Firefox, Chrome, Opera, Safari) 易于集成的基本有

推荐60个jQuery插件(转)

jQuery插件jQuery Spin Button自定义文本框数值自增或自减 jQuery插件JQuery Pager分页器实现javascript分页功能 jQuery插件FontSizer实现Javascript自定义动态调整网页文字大小 jQuery插件Magnify放大镜实现javascript图片放大功能 jQuery插件tooltip提示条实现Javascript动态文字或图片提示效果 jQuery插件Step Carousel Viewer实现Javascript图片滑动旋转效果

一些常用的jQuery插件

1. X-editable 这个插件能够让你在页面上创建可编辑的元素.它能够使用任何引擎(bootstrap.jquery-ui.jquery),并且包含弹出式和内联模式. 2. Garlic.js Garlic.js 自动在本地保存表单文本字段的值,直到表单被提交.这样,你的用户如果不小心关闭选项卡或浏览器,也不会失去任何宝贵的数据. 3. Pickadate.js 完全响应式和轻量级的 jQuery 日期输入选择器. 4. jHERE 有了 jHERE,你可以很容易地添加互动地图到您的网站中