js仿淘宝放大镜效果


Posted in Javascript onDecember 28, 2020

仿淘宝放大镜封装效果,供大家参考,具体内容如下

放大镜是做好了,但是没有下面小型导航无法选择放大图片,后期我会在封装出来的。由于考试当前 考完试我会在推出vue的放大效果。以下是代码:

1.html代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link href="css/index.css" rel="stylesheet">

</head>
<body>
<div class="magnify">
 <div class="magnify_conatiner">
 <div class="magnify_preview">
  <img class="sizeimg" src="../../../image/1.jpg" alt="">
  <div class="magnif_mask"></div>
  <div class="margnif_big">
  <img class="bigImg" src="../../../image/1.jpg" alt="">
  </div>
 </div>

 </div>
</div>
</div>
<script src="js/index.js"></script>
<script>

 var list = {
 BackgroundColor:'red',//遮罩层 颜色 必填
 Opacity:0.2,//遮罩层透明度 随意
 size:1.5 //放大倍数 必填

 }
 init(list)
 
</script>

</body>
</html>

2.css代码

.magnify_conatiner {
 width: 500px;
 height: 500px;
 margin: 50px 50px;
}

.magnify_conatiner .magnify_preview {
 position: relative;
 height: 400px;
 border: 1px silver solid;
 background-color: red;

}
div.magnify_preview .sizeimg {
 height: 100%;
 width: 100%;
}
.magnify_conatiner .magnify_preview .magnif_mask{
 position: absolute;
 top: 0;
 left: 0;
 opacity: .5;
 border: 1px solid #ccc;
 cursor: move;
 display: none;
}
.margnif_big{
 position: absolute;
 display: none;
 top: 0px;
 left: 501px;
 width: 450px;
 height: 450px;
 z-index: 999;
 border: 1px solid #ccc;
 overflow: hidden;
}
.margnif_big img{
 position: absolute;
 top: 0;
 left: 0;
}

3.封装的 js代码

function init(obj) {

 if (obj.BackgroundColor && obj.size) {
 var maskBigColor = obj.BackgroundColor
 var maskSize = obj.size
 var maskOpacity = obj.Opacity
 if(maskOpacity === undefined){
  maskOpacity = 0.2
 }
 var magnify_preview = document.querySelector('.magnify_preview')
 var mask = document.querySelector('.magnif_mask')
 var big = document.querySelector('.margnif_big')
 var bigIMG = document.querySelector('.bigImg')
 mask.style.height = obj.size * 100 + 'px'
 mask.style.width = obj.size * 100 + 'px'
 mask.style.backgroundColor = obj.BackgroundColor
 mask.style.opacity = maskOpacity
 magnify_preview.addEventListener('mouseover', function () {
  mask.style.display = 'block'
  big.style.display = 'block'

 })
 magnify_preview.addEventListener('mouseout', function () {
  mask.style.display = 'none'
  big.style.display = 'none'

 })
 magnify_preview.addEventListener('mousemove', function (e) {
  var x = e.pageX - this.offsetLeft
  var y = e.pageY - this.offsetTop
  var maskX = x - mask.offsetWidth / 2
  var maskY = y - mask.offsetHeight / 2
  var magnify_previewX = magnify_preview.offsetWidth
  var magnify_previewY = magnify_preview.offsetHeight
  var maskMaxX = magnify_preview.offsetWidth - mask.offsetWidth
  var maskMaxY = magnify_preview.offsetHeight - mask.offsetHeight
  if (maskX <= 0) {
  maskX = 0
  } else if (maskX >= magnify_previewX - mask.offsetWidth) {
  maskX = magnify_previewX - mask.offsetWidth
  }
  if (maskY <= 0) {
  maskY = 0
  } else if (maskY >= magnify_previewY - mask.offsetHeight) {
  maskY = magnify_previewY - mask.offsetHeight
  }
  mask.style.left = maskX + 'px'
  mask.style.top = maskY + 'px'

//大图片的移动距离 = 遮挡层的移动距离*大图片最大移动距离 / 遮挡层最大移动距离


  var bigMaxX = bigIMG.offsetWidth - big.offsetWidth
  var bigImgY = bigIMG.offsetHeight - big.offsetHeight
  var bigX = maskX * bigMaxX / maskMaxX
  var bigY = maskY * bigImgY / maskMaxY

  bigIMG.style.left = - bigX + 'px'
  bigIMG.style.top = - bigY + 'px'

 })


 } else {
 console.log('error')
 }

}

后期考完试我会继续的,图片大家自己更改吧,我没有用网图

效果展示

js仿淘宝放大镜效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用window.location.href实现刷新另个框架页面
Mar 07 Javascript
在Windows上安装Node.js模块的方法
Sep 25 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
js实现目录定位正文示例
Nov 14 Javascript
JS继承用法实例分析
Feb 05 Javascript
javascript数据类型验证方法
Dec 31 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
AngularJS入门教程之ng-class 指令用法
Aug 01 Javascript
JavaScript初学者必看“new”
Jun 12 Javascript
jquery自定义显示消息数量
Dec 19 jQuery
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
Sep 21 Javascript
html5中sharedWorker实现多页面通信的示例代码
May 07 Javascript
JavaScript实现原型封装轮播图
Dec 27 #Javascript
JavaScript代码实现简单计算器
Dec 27 #Javascript
JavaScript实现雪花飘落效果
Dec 27 #Javascript
微信小程序自定义胶囊样式
Dec 27 #Javascript
JS实现鼠标移动拖尾
Dec 27 #Javascript
JavaScript实现滚动加载更多
Dec 27 #Javascript
jQuery实现简单轮播图效果
Dec 27 #jQuery
You might like
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
wxPython 入门教程
2008/10/07 Python
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
python实现维吉尼亚算法
2019/03/20 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
大学生职业规划论文
2014/01/11 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
食品质检员岗位职责
2015/04/08 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL