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

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. Python - Python的基础知识结构,学习方法、难点和重点

    [原创]转载请注明作者Johnthegreat和本文链接. 相信大家都知道,Python很容易学,有编程基础的人,最多两个星期就可以很愉快的撸Python的代码了,那么具体涉及的知识有哪些,下面为大家 ...

  2. python机器学习入门-(1)

    机器学习入门项目 如果你和我一样是一个机器学习小白,这里我将会带你进行一个简单项目带你入门机器学习.开始吧! 1.项目介绍 这个项目是针对鸢尾花进行分类,数据集是含鸢尾花的三个亚属的分类信息,通过机器 ...

  3. 从一次“并发修改字段业务”引出多版本并发控制与InnoDB锁

    并发字段修改业务 最近在主要在做"工作流引擎"课题的预研工作,在涉及到"会签任务"(工作流业务概念,这与我们今天讨论文问题没有太多关联)的时候,遇到了一个并发修 ...

  4. python 基础篇 匿名函数

    匿名函数基础 首先,什么是匿名函数呢?以下是匿名函数的格式: lambda argument1, argument2,... argumentN : expression 我们可以看到,匿名函数的关键 ...

  5. python字符串 提取括号中的内容

    返回值是一个列表 re.findall(r'[(](.*?)[)]', str1)

  6. [SketchUp]-绘制自己的家

    [SketchUp]-绘制自己的家 softsketchuphome 简介 最近已经完成了 毕业论文, 等待盲审的过程中, 将过去几年做的东西也都一一整理了, 硬盘中好几个不敢动的文件夹 也都可以删除 ...

  7. 【Linux网络基础】TCP/IP协议簇的详细介绍(三次握手四次断开,11种状态)

    一.TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. 传输控制协议(tcp/ip)簇是相关国防部DoD所创建的,主要用来确保数据的完整性以及在毁灭性战争中维持通信 是由一组不 ...

  8. 【Linux常见命令】tail命令

    tail - output the last part of files tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件. tail -f filename  ...

  9. Java高效开发IntelliJ IDEA 2019.1 新特性

    1. 重构类.文件.符号,Action 搜索 IntelliJ IDEA(以下简称 IDEA) 中的搜索可以分为以下几类 类搜索,比如 Java,Groovy,Scala 等类文件 文件搜索,类文件之 ...

  10. Gartner:2016 Q2全球服务器市场,中国再度成为亮点

    对于IT产品供应商来说,Gartner.IDC等第三方分析机构市场调研报告无疑是一次"中考",成绩优异的论功行赏,迎接鲜花和掌声:差强人意,批斗会将是不可避免的,接下来加班加点,力 ...