用JS怎样写鼠标移入放大效果,方法是什么

Admin 2022-08-09 群英技术资讯 537 次浏览

这篇文章主要介绍“用JS怎样写鼠标移入放大效果,方法是什么”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“用JS怎样写鼠标移入放大效果,方法是什么”文章能帮助大家解决问题。




使用原生js编写一个鼠标移入图片放大效果,供大家参考,具体内容如下

目标

给图片添加鼠标移动放大方法效果,移到哪里放大哪里

先看看效果是不是你想要的,再看代码

移入前

移入后

html

<!-- css看着写 -->
    <div class="Box" style="width:200px;height:200px;border:1px solid #f00;position: relative;top:0;left:0;overflow: hidden;">
        <Img  src="../image/lingtai.jpg" alt="" style="width:200px;height:200px;position:absolute;left:0;top:0;">
</div>

javascript

// 图片放大镜
// @params Class 目标class string
// @params Scale 放大倍数 number
function ScaleImg(Class, Scale){
        
        this.Box = document.querySelector(Class);
    
        this.Img = this.Box.querySelector('img');
        
        this.scale = Scale || 3 ;
    
        // 盒子中心点
        this.BoxX = this.Box.offsetWidth / 2; 
        this.BoxY = this.Box.offsetHeight / 2; 
    
        // 获取盒子初始定位
        this.Left = parseFloat( this.Box.offsetLeft ); 
        this.Top = parseFloat(this.Box.offsetTop ); 
    
        this.Init();
    
    }
    
    ScaleImg.prototype = {
    
        // 鼠标移入
        Mouseover: function(e){
            
            var e = e || window.event;
            
            // 放大图片
            this.Img.style.width = this.Img.offsetWidth * this.scale + "px"; 
            this.Img.style.height = this.Img.offsetHeight * this.scale + "px";
    
            // 设置放大后的图片定位
            this.Img.style.left = (this.Box.offsetWidth - this.Img.offsetWidth) / 2 + "px"; 
            this.Img.style.top = (this.Box.offsetHeight - this.Img.offsetHeight) / 2 + "px"; 
            
            // 获取图片放大后定位值
            this.ImgLeft = parseFloat(this.Img.style.left); 
            this.ImgTop = parseFloat(this.Img.style.top); 
    
            this.Box.left = (this.Box.offsetWidth - this.Img.offsetWidth) / 2;
            this.Box.top = (this.Box.offsetHeight - this.Img.offsetHeight) / 2;
            
            // 阻止默认事件
            return ;
    
        },
    
        // 鼠标移除
        Mouseout: function(e){
    
            var e = e || window.event;
            
            // 重置css
            this.Img.style.width = this.Img.offsetWidth / this.scale + "px"; 
            this.Img.style.height =this.Img.offsetHeight / this.scale + "px"; 
    
            this.Img.style.left = Math.floor((this.Box.offsetWidth - this.Img.offsetWidth) / 2) + "px"; 
            this.Img.style.top = Math.floor((this.Box.offsetHeight - this.Img.offsetHeight) / 2) + "px";
    
            return  ;
        },
    
        // 鼠标移动
        Mousemove: function(e){
    
            var e = e || window.event;
    
            // 图片鼠标位置
            var ImgXY = {"x": this.Left + this.BoxX, "y": this.Top + this.BoxY};
    
            // 获取偏移量 
            var left = (ImgXY.x - e.clientX ) / this.BoxX * this.ImgLeft ,
                top = (ImgXY.y - e.clientY) / this.BoxY * this.ImgTop ;
            
            this.Img.style.left = Math.floor(this.Box.left - left) + "px";
            this.Img.style.top = Math.floor(this.Box.top - top) + "px";
    
            return ;
        },
    
        // 初始化
        Init: function(e){
    
            var that = this;
    
            this.Box.onmouseover = function(e){
                that.Mouseover(e);
            }
            this.Box.onmouseout = function(e){
                that.Mouseout(e);
            }
            this.Box.onmousemove = function(e){
                that.Mousemove(e);
            }
    
        }
    }
    
    // 实例一个对象
    new ScaleImg('.Box');    

上述内容具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多"用JS怎样写鼠标移入放大效果,方法是什么"的内容,大家可以关注群英网络的其它相关文章。 群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服