zoukankan      html  css  js  c++  java
  • 实现产品图片的放大镜效果:

       <div class="product_intro container clearfix">
            <div class="product_img">
                <div class="product_img_1">
                    <div class="mask"></div>
                    <div class="show_big">
                        <img src="upload/big.jpg" class="big" alt="">
                    </div>
                    <img src="upload/s3.png" alt=""></div>
                <div class="show_images">
                    <a href="javascript:;" class="left_span"></a>
                    <a href="javascript:;" class="right_span"></a>
                    <ul>
                        <li><img src="upload/pre.jpg" alt=""></li>
                        <li><img src="upload/pre.jpg" alt="" class="current"></li>
                        <li><img src="upload/pre.jpg" alt=""></li>
                        <li><img src="upload/pre.jpg" alt=""></li>
                        <li><img src="upload/pre.jpg" alt=""></li>
                    </ul>
                </div>
            </div>
            <script>
                var mask = document.querySelector('.mask');
                var show_big = document.querySelector('.show_big');
                var product_img_1 = document.querySelector('.product_img_1');
                product_img_1.addEventListener('mouseover', function() {
                    mask.style.display = 'block';
                    show_big.style.display = 'block';
                })
                product_img_1.addEventListener('mouseout', function() {
                    mask.style.display = 'none';
                    show_big.style.display = 'none';
                })
                var pro_img_width = product_img_1.offsetWidth;
                var pro_img_height = product_img_1.offsetHeight;
                product_img_1.addEventListener('mousemove', function(e) {
                    var x = e.pageX - this.offsetLeft;
                    var y = e.pageY - this.offsetTop;
                    var mask_width = mask.offsetWidth;
                    var mask_height = mask.offsetHeight;
                    var maskmaxX = this.offsetWidth - mask_width;
                    var maskmaxY = this.offsetHeight - mask_height
                    var maskX = x - mask_width / 2;
                    var maskY = y - mask_width / 2;
                    if (maskX <= 0) {
                        maskX = 0;
                    } else if (maskX >= maskmaxX) {
                        maskX = maskmaxX;
                    }
                    if (maskY <= 0) {
                        maskY = 0;
                    } else if (maskY >= maskmaxY) {
                        maskY = maskmaxY;
                    }
                    mask.style.left = maskX + 'px';
                    mask.style.top = maskY + 'px';
             
    //  大图片的移动距离 = 遮挡层移动距离 * 大图片最大移动距离 / 遮挡层的最大移动距离
                    var big = document.querySelector('.big')
                    console.log(big.offsetWidth)
                    var bigmaxX = show_big.offsetWidth - big.offsetWidth;
                    var bigmaxY = show_big.offsetHeight - big.offsetHeight;
                    var bigX = maskX * bigmaxX / maskmaxX;
                    var bigY = maskY * bigmaxY / maskmaxY;
                    big.style.left = bigX + 'px';
                    big.style.top = bigY + 'px';
                })
  • 相关阅读:
    NOJ 1116 哈罗哈的大披萨 【淡蓝】 [状压dp+各种优化]
    Codeforces Round #278 (Div. 2) B. Candy Boxes [brute force+constructive algorithms]
    noj 2069 赵信的往事 [yy题 无限gcd]
    noj 2068 爱魔法的露露 [线性扫一遍]
    Codeforces Round #275 (Div. 2) B. Friends and Presents 二分+数学
    Word2007文档中怎么输入上标下标
    Linux下查找命令
    矩阵求逆
    LRC算法在人脸识别中应用
    java从txt文档读写数据
  • 原文地址:https://www.cnblogs.com/rainbowupdate/p/12556995.html
Copyright © 2011-2022 走看看