本篇文章主要講述的就是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');
全部內容已講述完畢,歡迎大家多多學習。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128140.html
摘要:知乎原文我的博客微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生寫了一個輪播圖效果,希望大家喜歡。 知乎原文 我的博客 微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生js寫了一個輪播圖效果,希望大家喜歡。這是我發布在github上的最后實現的效果:https://heternally.gith...
摘要:知乎原文我的博客微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生寫了一個輪播圖效果,希望大家喜歡。 知乎原文 我的博客 微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生js寫了一個輪播圖效果,希望大家喜歡。這是我發布在github上的最后實現的效果:https://heternally.gith...
閱讀 547·2023-03-27 18:33
閱讀 732·2023-03-26 17:27
閱讀 630·2023-03-26 17:14
閱讀 591·2023-03-17 21:13
閱讀 521·2023-03-17 08:28
閱讀 1801·2023-02-27 22:32
閱讀 1292·2023-02-27 22:27
閱讀 2178·2023-01-20 08:28