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';
                })
  • 相关阅读:
    黄聪:robots.txt一分钟教程
    黄聪:C#获取系统中的所有字体
    黄聪:C#下如何实现服务器+客户端的聊天程序
    黄聪:C#截取DOS命令输出流取得网卡MAC地址
    黄聪:选择适当的关键词
    黄聪:C#的Main(String[] args)参数输入问题
    黄聪:C#正则表达式整理备忘
    黄聪:【强烈推荐】搜索引擎排名决定一切吗!
    黄聪:第2章 并发操作的一致性问题 (2)
    黄聪:VS2008 "LIB 环境变量" 无效解决方案
  • 原文地址:https://www.cnblogs.com/rainbowupdate/p/12556995.html
Copyright © 2011-2022 走看看