jquery 放大 缩小-使用jquery实现天猫放大镜及图像切换

2023-09-02 0 1,653 百度已收录

放大

    1. “缩略图”窗口与“原图”窗口中放置的是同一个图片,但“缩略图”窗口中的图片缩小为400px,
    而“原图”窗口中的图片保持原始大小,溢出部分设为隐藏
    2. 先确定缩放比例,我们假定原图大小为1000px,缩略图大小为400px,缩放比例为2.5
    3. 首先实现“放大镜”框跟随鼠标移动的功能(我们让鼠标处于“放大镜”框的中心)
    4. 其次实现“原图”窗口中的图片随“放大镜”框的移动而相应移动
    5. 鼠标向右移动,“原图”窗口中的图片向左移动,它们的方向是相反的!这是实现原理中的关键环节
    6. “放大镜”框的大小不是随意设定的,它与放大倍数有关,如果要放大2.5倍,

html部分:这里需要使用2张一定长度、一定比例的图片。 在页面中按照比例设置2个div存放2张长图,在小图的div中按照一定的比例设置1个。 扩大面积

<div class="nav">
        <div id="box">
            <img src="./imgs/0_big.jpg" alt="">
            <div id="show"></div>
        </div>
        <div id='image'>
            <img src="./imgs/0_big.jpg" alt="">
        </div>
    </div>
    <div>
        <li><img src="./imgs/0_big.jpg" alt=""></li>
        <li><img src="./imgs/1_big.jpg" alt=""></li>
        <li><img src="./imgs/2_big.jpg" alt=""></li>
        <li><img src="./imgs/3_big.jpg" alt=""></li>
        <li><img src="./imgs/4_big.jpg" alt=""></li>
    </div>

主要CSS样式:溢出隐藏overflow:hidden、隐藏视口显示:none、用于定位位置的主要暴风:键盘关节风mousemove()和键盘hover()

#box {
            width: 600px;
            height: 600px;
            border: 1px solid black;
            position: relative;
        }
        #box img{
            width:600px;
            height:600px;
        }
        #image {
            width: 500px;
            height: 500px;
            border: 1px solid black;
            overflow: hidden;
            position: relative;
        }
        li {
            list-style: none;
            float: left;
            border: 2px solid black;
        }
        li img{
            width: 100px;
            height: 100px;
            margin: 8.3px;
        }
        #show {
            width: 200px;
            height: 200px;
            background: rgba(0, 0, 0, 0.5);
            position: absolute;
            top:0;
        }
        .nav {
            height: 600px;
            width: 910px;
            display: flex;
            justify-content: space-between;
        }
        #image img{
            position: absolute;
            width:1300px;
            height:1300px;
        }

jquery部分代码​最终实现大图对应的连接。 这里需要注意的是jquery 放大 缩小jquery 放大 缩小,大图的连接方向必须与放大区域的连接方向相反。

$('div li img').click(function () {
            $('#box img').attr('src',this.src)
            $('#image img').attr('src',$('#box img')[0].src)
        })
        var box = $('#box')
        var image = $('#image')
        var btn = $('#show')
        var flge = false
        $('#show').mousedown(function () {
            flge = true
            $('#box').mousemove(function (e) {
                if(flge){
                    var moveX = e.pageX - 50;
                var moveY = e.pageY - 50;
                var maxX = e.pageX;
                var maxY = e.pageY;
                if (moveX < 0) {
                    moveX = 0;
                }
                if (moveY < 0) {
                    moveY = 0;
                }
                if (moveX > 400) {
                    moveX = 400;
                }
                if (moveY > 400) {
                    moveY = 400;
                }              
                $('#show').css('left', moveX)
                $('#show').css('top', moveY)
                $('#image img').css('left',(-moveX)*2)
                $('#image img').css('top',(-moveY)*2)
                } 
            })
        })
        $('#show').mouseup(function () {
            flge = false
        })

最后上传所有代码


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" nav="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" nav="ie=edge">
    <title>Document</title>
    <script src="./jquery-3.4.1.js"></script>
    <style>
        #box {
            width: 600px;
            height: 600px;
            border: 1px solid black;
            position: relative;
        }
        #box img{
            width:600px;
            height:600px;
        }
        #image {
            width: 500px;
            height: 500px;
            border: 1px solid black;
            overflow: hidden;
            position: relative;
        }
        li {
            list-style: none;
            float: left;
            border: 2px solid black;
        }
        li img{
            width: 100px;
            height: 100px;
            margin: 8.3px;
        }
        #show {
            width: 200px;
            height: 200px;
            background: rgba(0, 0, 0, 0.5);
            position: absolute;
            top:0;
        }
        .nav {
            height: 600px;
            width: 910px;
            display: flex;
            justify-content: space-between;
        }
        #image img{
            position: absolute;
            width:1300px;
            height:1300px;
        }
    </style>
</head>
<body>
    <div class="nav">
        <div id="box">
            <img src="./imgs/0_big.jpg" alt="">
            <div id="show"></div>
        </div>
        <div id='image'>
            <img src="./imgs/0_big.jpg" alt="">
        </div>
    </div>
    <div>
        <li><img src="./imgs/0_big.jpg" alt=""></li>
        <li><img src="./imgs/1_big.jpg" alt=""></li>
        <li><img src="./imgs/2_big.jpg" alt=""></li>
        <li><img src="./imgs/3_big.jpg" alt=""></li>
        <li><img src="./imgs/4_big.jpg" alt=""></li>
    </div>
    <script>
        $('div li img').click(function () {
            $('#box img').attr('src',this.src)
            $('#image img').attr('src',$('#box img')[0].src)
        })
        var box = $('#box')
        var image = $('#image')
        var btn = $('#show')
        var flge = false
        $('#show').mousedown(function () {
            flge = true
            $('#box').mousemove(function (e) {
                if(flge){
                    var moveX = e.pageX - 50;
                var moveY = e.pageY - 50;
                var maxX = e.pageX;
                var maxY = e.pageY;
                if (moveX < 0) {
                    moveX = 0;
                }
                if (moveY < 0) {
                    moveY = 0;
                }
                if (moveX > 400) {
                    moveX = 400;
                }
                if (moveY > 400) {
                    moveY = 400;
                }              
                $('#show').css('left', moveX)
                $('#show').css('top', moveY)
                $('#image img').css('left',(-moveX)*2)
                $('#image img').css('top',(-moveY)*2)
                } 
            })
        })
        $('#show').mouseup(function () {
            flge = false
        })
    </script>
</body>
</html>

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 jquery jquery 放大 缩小-使用jquery实现天猫放大镜及图像切换 https://www.wkzy.net/game/188989.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务