html、css、js实现放大镜效果
2020-08-10 19:30
1471 查看
放大镜
效果图:
【图片来自我最爱的阴阳师官网】
html:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="style.css"> </head> <body> <div class="demo"> <!-- 小图 --> <div class="small-box"> <!-- 放大镜 --> <div class="float-box"></div> <img src="../1920x1080.jpg" class='small-img'/> </div> <!-- 显示 --> <div class="big-box"> <img src="../1920x1080.jpg"/> </div> </div> </body> <script src="static/index.js"></script> </html>
css:
* { margin: 0 ; padding: 0; } .demo { display: block; width: 400px; margin: 50px; position: relative; border: 1px solid #ccc; } .small-box { position: relative; z-index: 1; } .float-box { display: none; width: 160px; height: 120px; position: absolute; background: #ffffcc; border: 1px solid #ccc; opacity: 0.5; pointer-events: none; } .mark { position: absolute; display: block; width: 400px; height: 225px; background-color: #fff; opacity: 0; z-index: 10; } .small-img{ width: 400px; display:block; } .big-box { display: none; position: absolute; top: 0; left: 460px; width: 400px; height: 300px; overflow: hidden; border: 1px solid #ccc; z-index: 1; pointer-events: none; } .big-box img { position: absolute; z-index: 5 }
JavaScript:
window.onload = function () { var objDemo = document.getElementsByClassName("demo")[0]; var objSmallBox = document.getElementsByClassName("small-box")[0]; var objFloatBox = document.getElementsByClassName("float-box")[0]; var smallImg = document.getElementsByClassName("small-img")[0]; var objBigBox = document.getElementsByClassName("big-box")[0]; var objBigBoxImage = objBigBox.getElementsByTagName("img")[0]; //移入事件 smallImg.onmouseover = function () { objFloatBox.style.display = "block" objBigBox.style.display = "block" } //移出事件 smallImg.onmouseout = function () { objFloatBox.style.display = "none" objBigBox.style.display = "none" } //移动事件 smallImg.onmousemove = function (ev) { var _event = ev || window.event; /* 获取鼠标中心点*/ var left = _event.clientX - objDemo.offsetLeft - objSmallBox.offsetLeft - objFloatBox.offsetWidth / 2; var top = _event.clientY - objDemo.offsetTop - objSmallBox.offsetTop - objFloatBox.offsetHeight / 2; if (left < 0) { left = 0; } else if (left > (objSmallBox.offsetWidth - objFloatBox.offsetWidth)) { left = objSmallBox.offsetWidth - objFloatBox.offsetWidth; } if (top < 0) { top = 0; } else if (top > (objSmallBox.offsetHeight - objFloatBox.offsetHeight)) { top = objSmallBox.offsetHeight - objFloatBox.offsetHeight; } /* 放大镜的位置 */ objFloatBox.style.left = left + "px"; objFloatBox.style.top = top + "px"; /* 计算百分比 */ var percentX = left / (objSmallBox.offsetWidth - objFloatBox.offsetWidth); var percentY = top / (objSmallBox.offsetHeight - objFloatBox.offsetHeight); /* 显示图片相对应位置 */ objBigBoxImage.style.left = -percentX * (objBigBoxImage.offsetWidth - objBigBox.offsetWidth) + "px"; objBigBoxImage.style.top = -percentY * (objBigBoxImage.offsetHeight - objBigBox.offsetHeight) + "px"; } }
相关文章推荐
- atitit.按钮光标滑过高亮切换以及其他动态效果的实现css html js --attilax总结
- 原生 js+css+html实现轮播图效果及左侧菜单栏效果
- 用html+css+js实现选项卡切换效果
- html 使用js+css+html实现图片划过预览效果
- 初识网站前端--用简单的HTML+CSS+js实现的选项卡切换效果
- HTML+CSS+jquery 实现环形比例图效果 AngularJS+css实现环形比例图效果
- Html+Css+Js实现放大镜功能(完整代码+详解)
- html,css,原生js——实现常见的Tab(tab)选项卡切换效果——延迟切换
- html+css+js简单实现图片轮播效果
- HTML+CSS+JS实现banner横幅自动切换效果
- 使用Html+Css+js技术编写一个完整的表格列表内容中 实现 复选框的全选 反选效果
- html,css,原生js——实现Tab(tab)选项卡切换效果——自动切换
- JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
- html+css+js实现选项卡效果
- CSS学习笔记-附加篇( CSS+JS实现的选项卡效果(html组件))
- 用原生js+HTML+CSS实现一个弹幕的效果
- 一段js+html+css实现的loading图标效果
- JS+HTML+CSS实现轮播效果
- html,css,原生js——实现Tab(tab)选项卡切换效果——立刻切换
- HTML+CSS+JS实现轮播效果