********** 希望对大家帮助 我会继续努力的 如果有不对的地方请大家帮忙指出******

1 【JS 代码】

<script>

    var oBox = document.getElementById("box");
var bigBox = document.getElementById("bigBox");
var img = bigBox.getElementsByTagName("img")[0];
var mark;
// 分别给元素的鼠标进入,滑动,滑出绑定方法;
// 1. 鼠标滑入; 1) :创建出小盒子 2) : bigBox 显示;
oBox.onmouseenter = function () {
var smallBox = document.createElement("div");
smallBox.id = "mark";
this.appendChild(smallBox); // 需要放入DOM中,才能用document去获取元素;否则当前节点是获取不到的;
mark = document.getElementById("mark");
// 让大盒子显示
bigBox.style.display = "block";
}
oBox.onmousemove = function (e) {
// 计算小盒子的位置;大盒子图片的位置
e = e || window.event;
var minL = 0;
var maxL = box.offsetWidth/2;
var left = e.clientX - box.offsetLeft - mark.offsetWidth/2;
var top = e.clientY- box.offsetTop - mark.offsetHeight/2;
// 如果left比最小值还小,那么直接让left等于最小值即可;如果left比最大值还大,那么直接设置成最大值;
if(left<minL){
left = minL;
}else if(left>maxL){
left=maxL;
}
if(top<minL){
top = minL;
}else if(top>maxL){
top = maxL;
}
// 设置盒子的left、top;
mark.style.left = left + "px";
mark.style.top = top + "px";
// mark 的left和img的left存在2倍关系;
img.style.left = -2*left + "px";
img.style.top = -2*top + "px";
}
oBox.onmouseleave = function () {
// 鼠标离开,移出mark;并且让大盒子隐藏;
this.removeChild(mark);
bigBox.style.display= "none";
} </script> 2 【HTNL部分】
<div id="box">
<img src="img/iphone.jpg" alt="">
</div>
<div id="bigBox">
<img src="img/iphone_big.jpg" alt="">
</div>
3【CSS部分】
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#box{
position: relative;
width:350px;
height:350px;
border: 1px solid black;
margin-top:30px;
margin-left:50px;
float:left;
}
#box img{
width:100%;
height:100%;
}
#bigBox{
display: none;
position: relative;
width:350px;
height:350px;
border: 1px solid black;
margin-top:30px;
margin-left:50px;
float: left;
overflow: hidden;
}
#bigBox img{
position: absolute;
width:700px;
height:700px;
}
#mark{
position: absolute;
width:175px;
height:175px;
background: rgba(0,0,0,0.3);
cursor: move;
left:0;
top:0;
}
</style>


放大镜功能 JS原生写法的更多相关文章

  1. arttemplate.js原生写法案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. screen,client,page三种确定鼠标坐标的区别和原生JS事件写法,区别于Jquery的$.on(x,y);和$.click()

    screenX clientX pageX的区别 screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX:跟scre ...

  3. Js原生实现抽奖功能

    <div>代码 按钮代码 JS原生代码  完整的代码: <div style="width:365px;height:300px;border:2px solid gree ...

  4. 15、js 原生基础总结

    Day1 一.什么是JS?   ==基于对象==和==事件驱动==的客户端脚本语言 二.哪一年?哪个公司?谁?第一个名字是什么? 1995,NetScape(网景公司),布兰登(Brendan Eic ...

  5. JS原生Date类型方法的一些冷知识

    ps:由于Date()是js原生函数,不同浏览器的解析器对其实现方式并不同,所以返回值也会有所区别.本文测试未特别申明浏览器的情况下,均是指win7 x64+chrome 44.0.2403.155 ...

  6. vue中图片放大镜功能

    仿淘宝详情页图片鼠标移过去可对图片放大显示在右侧 效果图如下图,此功能支持PC端与移动端 接下来进入代码实现环节: 先准备两张图片,一张小图片叫 '土味.jpg',大小160*91:一张大图片叫 ' ...

  7. js原生高逼格插件

    如何定义一个高逼格的原生JS插件 作为一个前端er,如果不会写一个小插件,都不好意思说自己是混前端界的.写还不能依赖jquery之类的工具库,否则装得不够高端.那么,如何才能装起来让自己看起来逼格更高 ...

  8. js原生代码实现轮播图案例

    一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...

  9. 手把手教你js原生瀑布流效果实现

    手把手教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一 ...

随机推荐

  1. 关于go的init函数

    亲测,如果加载一个包,如果一个包里的每个文件,均含有init函数,那么均会执行. 目前来看,init的执行顺序,是文件名称的自然排序进行执行的. 并且只是所加载包里的go文件的init函数执行,对于包 ...

  2. INDIRECT函数实现动态图表的跨数据抓取

    涉及函数: indirect函数:通常有两种用法.直接指定单元格地址和隐式指定单元格地址.直接指定:=indirect("A4"),则会返回A4单元格所显示的内容.参数给定的既是字 ...

  3. 6、Time & Window

    一.Time & Watermark 1.1.DataStream支持的三种time DataStream有大量基于time的operator Flink支持三种time: EventTime ...

  4. JavaScript学习笔记(1)字符串方法

    字符串方法 length 属性返回字符串的长度 var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var sln = txt.length; inde ...

  5. 【Inno Setup】查看是否安装了VC++ 2015 Redistributeable

    可能有必要先测一下注册表的这一项是否存在 if RegValueExists(HKLM, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Ru ...

  6. QT 的 parent 该如何理解

    对话框是GUI程序和用户进行简短交互的顶层窗口,所谓顶层窗口即始终在主窗口之上显示.QDialog是Qt所有类型的对话框窗口的基类,它继承于QWidget,是一种容器类型组件. QWidget是所有窗 ...

  7. cocos2d 导演,场景

    导演(Director) Cocos2d-x 使用导演的概念,这个导演和电影制作过程中的导演一样!导演控制电影制作流程,指导团队完成各项任务.在使用 Cocos2d-x 开发游戏的过程中,你可以认为自 ...

  8. Windows10中打开git bash闪退解决方案

    重装系统后打开gitbash莫名其妙闪退... 究其原因,好像是盗版系统的null.sys文件损坏 那就在这里附上null.sys文件的下载链接: https://pan.baidu.com/s/1V ...

  9. Error: Can't find Python executable "G:\Python27"

    错误如题,node-gyp官网介绍不够详细,应设置python.exe的具体绝对路径,如下所示: npm config set python G:\Python27\python.exe 转载于:ht ...

  10. 批量将制定文件夹下的全部Excel文件导入微软SQL数据库

    以下代码将c:\cs\文件夹下的全部Excle中数据导入到SQL数据库 declare @query vARCHAR(1000) declare @max1 int declare @count1 i ...