通過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
- 京東放大鏡效果
- JavaScript跟隨滑鼠移動的圖片效果JavaScript
- 直播app開發搭建,純javascript實現圖片放大鏡效果APPJavaScript
- 用JavaScript中jQuery編寫放大鏡效果JavaScriptjQuery
- 放大鏡:onmousemove版 京東、淘寶版
- 用最簡單的方法實現原生 JS 放大鏡特效JS特效
- 仿京東、淘寶首頁,通過兩層巢狀的RecyclerView實現tab的吸頂效果巢狀View
- JavaScript、CSS實現滑鼠跟隨繁花效果JavaScriptCSS
- jQuery 放大鏡效果jQuery
- 淘寶放大鏡的簡單實現,原來道理很簡單
- Flutter 圖片加濾鏡效果Flutter
- CSS3圖片拉近放大效果CSSS3
- jQuery 放大鏡效果詳解jQuery
- 實現一個簡單的基於 WebAssembly 的圖片處理應用Web
- 四角游標跟隨滑鼠, 滑鼠落在哪個圖片上, 游標就跟隨到哪張圖片 (一種實現思路)
- Android 實現GridView的橫向滾動,實現仿京東秒殺效果AndroidView
- 用Flutter實現一個仿Twitter的點贊效果Flutter
- php 實現一個簡單的圖片邊緣檢測PHP
- iOS 仿淘寶實現商品規格圖片的放大縮小功能iOS
- 視覺化學習:實現Canvas圖片區域性放大鏡視覺化Canvas
- 用Python寫一個圖片標註工具Python
- CSS滑鼠懸浮圖片動畫放大效果CSS動畫
- javascript實現放大鏡外掛【含進階】JavaScript
- Canvas實現放大鏡效果完整案例分析(附程式碼)Canvas
- JavaScript之實現一個簡單的VueJavaScriptVue
- 用 JavaScript 實現簡單拼圖遊戲JavaScript遊戲
- 實現簡單的輪播圖(單張圖片、多張圖片)
- JavaScript簡單的動畫效果JavaScript動畫
- 高仿京東到家APP引導頁炫酷動畫效果APP動畫
- 直播網站原始碼,Android中點選圖片放大的簡單方法網站原始碼Android
- 實現一個簡單的 JavaScript 編譯器JavaScript編譯
- JavaScript圖片簡單等比例縮放JavaScript
- 圖片仿摺痕效果工具:JixiPix Fold Defy for MacMac
- 【Javascript + Vue】實現隨機生成迷宮圖片JavaScriptVue隨機
- 如何靠地圖示註賺錢?這個思路簡單又實用地圖
- JavaScript註釋:單行註釋和多行註釋詳解JavaScript
- MD圖片註釋居中