原生JS实现的放大镜特效示例【测试可用】


Posted in Javascript onDecember 08, 2018

本文实例讲述了原生JS实现的放大镜特效。分享给大家供大家参考,具体如下:

最近在做ecshop的二次开发,遇到一些jquery插件与ecshop的冲突,

调整冲突的需要修改的地方又太多,修改起来得不偿失,

故做了一个原生的js实现商品详情页面的放大镜效果,以避免冲突!

下面介绍一下代码及实现过程:

首先,创建fangda.html文件

在文件头部的<head></head>中添加文件的css样式,即:

<style type="text/css">
#div1 { width:304px; height:222px; position:relative; margin:30px auto 0px; border:2px solid red;}
#div1 img{width:304px; height:222px;}
#div1 span { width:100px; height:100px; background:red; left:0px;top:0px; position:absolute; display:none; filter:alpha(opacity:20); opacity:0.2;}
.show { width:100%; height:100%; background:red; position:absolute; z-index:10px; filter:alpha(opacity:10); opacity:0.1; left:0px; top:0px; }
#div2 {width:304px; height:222px; position:relative; display:none; overflow:hidden; margin:0px auto 0px;}
#img1 { position:absolute;}
</style>

设置,显示在页面的内容

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JavaScript 图片放大代码</title>
<body>
<div id="div1">
<img src="http://demo.3water.com/js/2017/html5-canvas-fangdajing-codes/s1.jpg" /> <!-- 本地图片路径 -->
<span></span> <!-- 鼠标滑动 放大区域 -->
<div class="show"></div>
</div>
<div id="div2"> <!-- 展示放大后的图片 -->
<img id="img1" src="http://demo.3water.com/js/2017/html5-canvas-fangdajing-codes/s1.jpg" /> <!-- 本地大图片路径 -->
</div>
</body>

然后,添加js事件效果,添加在<head></head>

<script type="text/javascript">
//通过页面加载事件,使页面加载完毕自动执行
window.onload=function ()
{
var oDiv=document.getElementById('div1');
var oShow=oDiv.getElementsByTagName('div')[0];
var oSpan=oDiv.getElementsByTagName('span')[0];
var oImg=document.getElementById('img1');
oShow.onmouseover=function()
{
oSpan.style.display='block';
oImg.parentNode.style.display='block';
};
oShow.onmouseout=function()
{
oSpan.style.display='none';
oImg.parentNode.style.display='none';
};
oShow.onmousemove=function(ev)
{
var oEvent=ev||event;
var x=oEvent.clientX-oDiv.offsetLeft-oSpan.offsetWidth/2;
var y=oEvent.clientY-oDiv.offsetTop-oSpan.offsetHeight/2;
//获得具体坐标
if(x<0)
{
x=0;
}
else if(x>oShow.offsetWidth-oSpan.offsetWidth)
{
x=oShow.offsetWidth-oSpan.offsetWidth;
}
if(y<0)
{
y=0;
}
else if(y>oShow.offsetHeight-oSpan.offsetHeight)
{
y=oShow.offsetHeight-oSpan.offsetHeight
}
oSpan.style.left=x+'px';
oSpan.style.top=y+'px';
var percentX=x/(oShow.offsetWidth-oSpan.offsetWidth);
var percentY=y/(oShow.offsetHeight-oSpan.offsetHeight);
var oImgparent=oImg.parentNode;
oImg.style.left=-percentX*(oImg.offsetWidth-oImgparent.offsetWidth)+'px';
oImg.style.top=-percentY*(oImg.offsetHeight-oImgparent.offsetHeight)+'px';
};
};
</script>

这样就实现了,图片移上后的放大效果,同时由于没有引入其他的插件,移植性比较好,可以通过更改较少的代码,就较好地规避在其他项目和商城中的冲突。

但缺点没有引入插件后效果华丽,加载页面没有引入插件的快,

可以考虑在这个页面做一个缓存,增加用户二次访问速度!

这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试运行效果如下:

 原生JS实现的放大镜特效示例【测试可用】

感兴趣的朋友可以使用上述在线工具测试一下看看运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jquery实现metro效果示例代码
Sep 06 Javascript
js 加密压缩出现bug解决方案
Nov 25 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
jquery实现通用的内容渐显Tab选项卡效果
Sep 07 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
Mar 10 Javascript
javascript 开发之百度地图使用到的js函数整理
May 19 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
Jun 15 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
react中使用swiper的具体方法
May 15 Javascript
VUE-cli3使用 svg-sprite-loader
Oct 20 Javascript
JS实现的小火箭发射动画效果示例
Dec 08 #Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 #jQuery
ES6的Fetch异步请求的实现方法
Dec 07 #Javascript
JavaScript this绑定过程深入详解
Dec 07 #Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 #Javascript
如何手动实现es5中的bind方法详解
Dec 07 #Javascript
JavaScript时间与时间戳的转换操作实例分析
Dec 07 #Javascript
You might like
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
Python 创建子进程模块subprocess详解
2015/04/08 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
工程学毕业生自荐信
2014/06/14 职场文书
县委务虚会发言材料
2014/10/20 职场文书
治庸问责工作总结
2015/08/11 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
golang中的struct操作
2021/11/11 Golang