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 相关文章推荐
用Mootools获得操作索引的两种方法分享
Dec 12 Javascript
javascript + jquery实现定时修改文章标题
Mar 19 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
AngularJS 作用域详解及示例代码
Aug 17 Javascript
D3.js实现直方图的方法详解
Sep 25 Javascript
angular 基于ng-messages的表单验证实例
May 04 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
Aug 23 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
Dec 03 Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 Javascript
微信小程序聊天功能的示例代码
Jan 13 Javascript
js实现移动端图片滑块验证功能
Sep 29 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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
python实现学员管理系统
2019/02/26 Python
python关于变量名的基础知识点
2020/03/03 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
运行Python编写的程序方法实例
2020/10/21 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
巴西世界杯32强口号
2014/06/05 职场文书
中秋联欢会主持词
2015/07/04 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书