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 相关文章推荐
javascript 冒号 使用说明
Jun 06 Javascript
javascript采用数组实现tab菜单切换效果
Dec 12 Javascript
不使用浏览器运行javascript代码的方法
Jul 24 Javascript
node.js中的http.response.write方法使用说明
Dec 14 Javascript
JavaScript实现三阶幻方算法谜题解答
Dec 29 Javascript
JQuery自适应窗口大小导航菜单附源码下载
Sep 01 Javascript
JavaScript简单下拉菜单特效
Sep 13 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
js Dom实现换肤效果
Oct 21 Javascript
JavaScript私有变量实例详解
Jan 24 Javascript
vue中使用v-model完成组件间的通信
Aug 22 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
php获取汉字首字母的函数
2013/11/07 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
php服务器的系统详解
2019/10/12 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
移动端效果之Swiper详解
2017/10/09 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
Python无损压缩图片的示例代码
2020/08/06 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
SQL面试题
2013/04/30 面试题
网络程序员自荐信
2014/01/25 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
租车协议书范本
2014/04/22 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
MySQL开启事务的方式
2021/06/26 MySQL