通過JavaScript如何做一個仿京東的跟隨圖片放大鏡效果?(附加註釋)簡單實用。
效果示例:
思想過程:
在一個大盒子裡放一個圖片,一個半透明的黃色遮罩層(帶有絕對定位才可以移動),一個放大過後的圖片,採取絕對定位固定到圖片的一側
html+css的片段:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.a1 {
position: relative;
width: 300px;
height: 300px;
cursor: move;
}
.a1>img{
width: 100%;
height: 100%;
}
.a1box {
display: none;
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
background-color: #FEDE4F; //設定顏色
opacity: 0.5; // 設定為半透明
}
.big {
display: none;
position: absolute;
left: 310px;
top: 0;
width: 600px;
height: 600px;
overflow: hidden;
}
.big>img {
position: absolute;
top: 0;
left: 0;
width: 200%;
height: 200%;
}
</style>
<script src="try.js"></script> //引入js程式碼片段
</head>
<body>
<div class="a1">
<img src="../../../html+css/images/yzfc.jpg" alt="">
<div class="a1box"></div>
<div class="big">
<img src="../../../html+css/images/yzfc.jpg" alt="" class="bigimg">
</div>
</div>
</body>
</html>
javascript的片段::
window.addEventListener('load',function() {
//獲取各個元素
var a1 = document.querySelector('.a1');
var a1box = document.querySelector('.a1box');
var big = document.querySelector('.big')
var bigimg = document.querySelector('.bigimg')
// 1.滑鼠經過兩個圖片顯示出來哦
a1.addEventListener('mouseover',function() {
a1box.style.display = 'block';
big.style.display = 'block';
})
// 2.滑鼠離開,兩個圖片的display改為none,隱藏
a1.addEventListener('mouseout',function() {
a1box.style.display = 'none';
big.style.display = 'none';
})
// 3.當滑鼠在其中移動時的相關聯的程式碼及解釋
a1.addEventListener('mousemove',function(e){
var x = e.pageX -a1.offsetLeft; //獲取 滑鼠在盒子內的x座標
var y = e.pageY - a1.offsetTop; // 獲取 滑鼠在盒子內的x座標
x = x - a1box.offsetWidth/2; // 使得滑鼠在盒子的中間
y = y - a1box.offsetWidth/2; // 使得滑鼠在盒子的中間
xmax = a1.offsetWidth - a1box.offsetWidth; //算出盒子在x方向的最大移動距離
ymax = a1.offsetHeight - a1box.offsetHeight; // 算出設定盒子在y方向最大的移動距離
// 判斷滑鼠是否離開盒子,防止盒子跟著滑鼠離開父容器
if(x<=0) {
x=0;
}
if(y<=0) {
y=0;
}
if(x>=xmax) {
x = xmax +'px';
}
if(y>=xmax) {
y = ymax+ 'px';
}
a1box.style.left = x+'px'; //設定盒子的 x座標
a1box.style.top = y+'px'; // 設定盒子的 y座標
//大圖片移動距離= 遮擋層移動距離*大圖片最大移動距離/遮擋層的最大移動距離
var bigimgx = bigimg.offsetWidth - big.offsetWidth; //獲取大圖片x方向上的最大移動距離
var bigimgy = bigimg.offsetHeight - big.offsetHeight; //獲取大圖片y方向上的最大移動距離
bigimg.style.left = -x * bigimgx / xmax +'px' //根據公式求出 大圖片x方向應該移動的距離
bigimg.style.top = -y * bigimgx / ymax +'px' // 根據公式求出 大圖片y方向應該移動的距離
})
})
本圖為程式碼示例的圖,可搬走。
相關文章
- JavaScript 圖片放大鏡效果JavaScript
- 圖片放大鏡效果實現過程詳解
- canvas實現的圖片放大鏡效果Canvas
- 直播app開發搭建,純javascript實現圖片放大鏡效果APPJavaScript
- JavaScript跟隨滑鼠移動的圖片效果JavaScript
- 一個基於vue的圖片放大鏡Vue
- javascript仿新浪微博圖片放大縮小及旋轉效果JavaScript
- 用JavaScript中jQuery編寫放大鏡效果JavaScriptjQuery
- 利用 OmniGraffle 實現放大鏡標註效果
- 用最簡單的方法實現原生 JS 放大鏡特效JS特效
- Magnifier.js - 支援滑鼠滾輪縮放的圖片放大鏡效果NifiJS
- 淘寶放大鏡的簡單實現,原來道理很簡單
- JavaScript、CSS實現滑鼠跟隨繁花效果JavaScriptCSS
- 如何通過 Web 技術實現一個簡單但有趣的 AR 效果Web
- jquery css3跟隨滑鼠晃動的圖片效果jQueryCSSS3
- javascript底部具有跟隨效果的橫向導航選單JavaScript
- 簡簡單單躲過JavaScript的3個錯誤釋出JavaScript
- 一個簡單的圖片水印工具
- 仿京東、淘寶首頁,通過兩層巢狀的RecyclerView實現tab的吸頂效果巢狀View
- CSS3圖片拉近放大效果CSSS3
- jQuery圖片放大和旋轉效果jQuery
- jQuery 放大鏡效果詳解jQuery
- 實現一個簡單的基於 WebAssembly 的圖片處理應用Web
- Flutter 圖片加濾鏡效果Flutter
- iOS 仿淘寶實現商品規格圖片的放大縮小功能iOS
- JavaScript 跟隨滑鼠指標的粒子效果JavaScript指標
- JQuery實現簡單美觀的圖片切換效果jQuery
- javascript實現的放大效果程式碼JavaScript
- 用Flutter實現一個仿Twitter的點贊效果Flutter
- CSS滑鼠懸浮圖片動畫放大效果CSS動畫
- php 實現一個簡單的圖片邊緣檢測PHP
- Android仿簡書長按文章生成圖片效果Android
- 一側具有滑鼠跟隨效果的垂直導航選單
- 視覺化學習:實現Canvas圖片區域性放大鏡視覺化Canvas
- 簡單實用的android 圖片的壓縮Android
- 用 JavaScript 實現簡單拼圖遊戲JavaScript遊戲
- javascript實現放大鏡外掛【含進階】JavaScript
- Android 實現一個仿微信的圖片選擇器Android