于经常网购的网友们,现在很多网站都有放大镜功能,每当你看到商品的时候,鼠标移动到图片时,就会有放大效果,知道是什么原理吗?小猿圈web前端就给你讲解JavaScript放大镜效果。
逻辑分析:
1. 有2个图片(大图、小图),图片之间都有很好尺寸比例
2. 鼠标移入小图这里事件采用onmousemove事件,移入后显示阴影部分以及右侧大图
3. 当鼠标移出则隐藏阴影部分以及右侧大图
4. 鼠标在小图移动,阴影部分跟随采用clientX和clientY的位移
5. 鼠标在小图部分左边移动,大图向右,刚好相反并且*其比例尺寸就是大图要移动的位置
代码实现:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
*{margin:0;padding: 0}
#box{
width:1200px;
height: 700px;
border:1px solid #ccc;
margin:150px;
}
#min{
float:left;
width:400px;
height: 400px;
position: relative;
}
b{
position: absolute;
left:0;
top:0;
width:200px;
height: 200px;
background: blue;
opacity: 0.5;
display: none;
}
#max{
float:right;
width:400px;
height: 400px;
overflow: hidden;
display: none;
position: relative;
}
#imgs{
position: absolute;
left:0;
top:0;
}
</style>
<body style="height: 2000px">
<div id="box">
<div id="min"><img src="imgs/min.jpg" alt=""><b></b></div>
<div id="max"><img src="imgs/max.jpg" alt="" id="imgs"></div>
</div>
<script type="text/javascript">
//1》鼠标移入到min这个盒子中,显示出来 放大图片的盒子和小阴影部分
//2》阴影跟随鼠标移动====》
var min = document.getElementById("min"),
max = document.getElementById("max"),
b = document.getElementsByTagName("b")[0],
imgs = document.getElementById("imgs");
min.onmousemove = function(e){
b.style.display = "block";
max.style.display = "block";
var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
var x = e.clientX+scrollLeft-min.offsetLeft- b.offsetWidth/2;
var y = e.clientY+scrollTop-min.offsetTop - b.offsetHeight/2;
if(x<0){
x=0;
}else if(x>min.offsetWidth-b.offsetWidth){
x=min.offsetWidth-b.offsetWidth;
}
if(y<0){
y=0;
}else if(y>min.offsetHeight-b.offsetHeight){
y=min.offsetHeight-b.offsetHeight;
}
b.style.left =x+"px";
b.style.top =y+"px";
imgs.style.left = -2*x+"px";
imgs.style.top = -2*y+"px";
}
min.onmouseout = function(){
b.style.display = "none";
max.style.display = "none";
}
</script>
</body>
</html>
上面就是小猿圈web前端讲师讲的JavaScript放大镜效果的代码了,还在等什么快去运行一下去吧,如果遇到问题可以找小猿圈web前端讲师去解答,如果你想学习前端开发,小猿圈还是很不错的,有需要的可以直接去看看的。
我们浏览淘宝或者京东网站的时候,当你用鼠标移动到产品详细页上面的图片时,图片上会显示小的方框,在图片的右边则显示出更大的图片方便浏览者可以看到更详细的产品细节。本文章我们就模拟下淘宝、京东产品放大镜效果。
<!DOCTYPE html>
<html lang="zn">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>京东放大镜</title>
<style>
.box {
width: 450px;
height: 450px;
border: 1px solid #ccc;
float: left; /*设置浮动使得两个盒子在一排显示*/
position: relative;/*设置定位 根据自身情况可以改为绝对定位 */
margin: 10px;
}
.big {
width: 600px;
height: 600px;
overflow: hidden;/*超出部分隐藏*/
border: 1px solid #ccc;
position: relative; /*设置定位 根据自身情况可以改为绝对定位 */
display: none;/*默认不显示 鼠标经过box时显示*/
}
.mask {
width: 300px;
height: 300px;
background-color: yellow;
position: absolute;/*在box类里面定位 层级高于展示图*/
top: 0px;
left: 0px;
opacity: .5;/*设置遮罩层的透明度*/
cursor: move;/*鼠标经过的时候变成十字拖动样式*/
display: none;/*默认不显示 鼠标经过box时显示*/
}
.img {
position: absolute;/*在big盒子里面绝对定位*/
/*JavaScript需要赋值需要设置top和left值*/
top: 0px;
left: 0px;
}
#smallpic{
width: 450px;
height: 450px;
}
</style>
</head>
<body>
<div class="box">
<img id='smallpic' src="small.jpg" alt="">
<div class="mask"></div>
</div>
<div class="big">
<img src="big.jpeg" alt="" class="img">
</div>
<script>
var mask = document.querySelector('.mask');
var box = document.querySelector('.box');
var big = document.querySelector('.big');
var img = document.querySelector('.img');
box.addEventListener('mouseover', function () {
mask.style.display = 'block';
big.style.display = 'block';
});
box.addEventListener('mouseout', function () {
mask.style.display = 'none';
big.style.display = 'none';
});
box.addEventListener('mousemove', function (e) {
//得到的x和y是鼠标在盒子内的坐标 this指向box
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 maskWidth = box.offsetWidth - mask.offsetWidth;
var maskHeight = box.offsetHeight - mask.offsetHeight;
//控制mask移动的范围
if (maskX <= 0) {
maskX = 0;
} else if (maskX >= maskWidth) {
maskX = maskWidth;
}
if (maskY <= 0) {
maskY = 0;
} else if (maskY >= maskHeight) {
maskY = maskHeight;
}
mask.style.left = maskX + 'px';
mask.style.top = maskY + 'px';
//大图最大移动距离
var imgWidth = img.offsetWidth - big.offsetWidth;
var imgHeight = img.offsetHeight - big.offsetHeight;
//大图片的移动距离 = mask移动距离 * 大图最大移动距离 /mask的最大移动距离
var bigX = maskX * imgWidth / maskWidth;
var bigY = maskY * imgHeight / maskHeight;
//赋值
img.style.left = (-bigX) + 'px';
img.style.top = (-bigY) + 'px';
});
</script>
</body>
</html>
效果图
教版小学科学一年级《放大镜》教学设计
知识目标:
1.知道放大镜的特点,并根据简单材料制作简易的放大镜。
2.能说出正确使用放大镜并描述观察结果,了解其作用。
过程与方法:学会使用放大镜,对比肉眼观察和使用放大镜,能发现更多的细节。
情感、态度、价值观:
1.理解使用放大镜观察的意义,培养持续用放大镜观察身边事物的兴趣。
2.培养学生实事求是的科学态度,乐于与人合作,共同探究。
教学重点: https://www.shimengyuan.com/nianji/949.html
知道放大镜的结构特点,能说出使用放大镜的方法和用途。
教学难点:能说出使用放大镜的方法和用途。
教学准备:课件、放大镜、图片、布条、报纸、小花、树叶、小字的书、带盖的瓶子、装水的烧杯等。
一、激趣导入
师:孩子们,故事伴随着我们一起成长,给我们带来了无限的欢乐。在开始今天的科学探索之前,老师给大家带来了一个助人为乐的故事,你们想听吗?
师:一天,爷爷的老花镜不小心摔碎了,配副新的得需要好几天,可是,爷爷有每天读书看报的习惯,这可怎么办呢?爷爷的邻居有个叫小华的小朋友,听到这个消息后,给爷爷送来了一份礼物,爷爷看到这个礼物,笑得合不拢嘴,因为他可以用这份礼物读书看报了。
师:孩子们,你们猜一猜,这份礼物是什么呢?
二、探究活动(一):认识放大镜
师:这份神秘的礼物究竟是什么呢?
师出示放大镜。
师:它就是我们的一位新朋友——放大镜。(板书:放大镜)。你想和它一起玩吗?可是,由于这个朋友身体比较特殊,为了防止它受到伤害,大家一定要注意轻拿轻放、不能用硬物去触碰它,(课件出示:轻拿轻放、不用硬物触碰)你们能做到吗?
1、摸一摸放大镜
师:下面我们来认识一下这位朋友吧!请同学们仔细观察它的样子,轻轻地摸一摸吧。
学生分组摸一摸放大镜。
①认识放大镜的结构。
师:它是有几部分构成的呢?
教师出示放大镜课件,学生观察后回答。
放大镜由三部分构成:镜框、镜片、镜柄。
②了解放大镜镜片的特点。
师:在它身体的这三部分里,你觉得哪一部分的作用最大?
学生回答:镜片。
师:放大镜的镜片究竟有什么特点呢?
学生回答,师总结:放大镜的镜片中间厚,边缘薄。
2、玩一玩:发现放大镜的作用。
师:这样的镜片观察到的物体与我们肉眼观察的物体究竟有什么不同呢?下面请同学们分组用放大镜仔细观察记录表上的图案,记录员在记录表上做好记录。
学生观察、探讨并记录。
师:哪一组同学上来展示一下?
学生展示,师总结:放大镜的作用——放大物体。(板书:放大物体)
师:你们观察的真仔细,一下子就发现了放大镜的秘密。给自己鼓鼓掌吧!
三、探究活动(二):放大镜还可以观察哪些物体。
(1)师:现在大家知道为什么小华要送爷爷这份礼物了吗?
生回答。
(2)放大镜的正确使用方法。
师:爷爷拿到这份礼物后,爱不释手,可是,爷爷又遇到了一个难题:放大镜如何使用呢?孩子们,你们愿意帮帮爷爷吗?
师:请组长拿出准备好的报纸,同学们分组研究,在使用放大镜时,用哪些操作方法可以看得更清楚呢?
学生分组探讨,邀请学生上台演示观察方法。师总结:两种方法:一种是移动放大镜,一种是移动物体。不断调整放大镜与物体间的距离,直到看清楚为止。(出示课件)
师:你们真是一群善于发现、又有爱心的孩子,用你们的聪明才智,帮助了爷爷,老师替爷爷谢谢大家,爷爷终于可以用这份礼物看报纸了。
(3)放大镜还可以观察哪些物体
师:除了读书看报之外,用放大镜还可以观察哪些物体呢?
生回答。
师:用放大镜观察的物体还真不少,可是,大家在观察物体时,一定要注意:不能用放大镜对着太阳看。这是为什么呢?
生回答。
师总结:因为放大镜可以把太阳光线汇聚起来产生热能,灼伤眼睛,甚至失明。所以,大家一定要注意,不能用放大镜对着太阳看。(出示课件)
师:下面请大家用放大镜观察一下身边的物体,看一看有什么新的发现呢?把你的发现跟身边的同学说一说吧!
生观察字典、布条、小花、叶子等物品。分组探讨,谈发现。
师总结:你们真是一群善于观察、善于思考的孩子!你们的发现真多呀!通过你们的观察,我们发现,放大镜不仅能放大物体,还能获得我们平时发现不了的许多信息。(出示课件)
四、探究活动(三):自制放大镜。
师:放大镜神奇吗?下面我们自己来制作一个放大镜好不好?
⑴指导孩子们观看大屏幕说一说怎样制作放大镜。
师:请同学们打开活动手册第4页。看一看,制作放大镜都需要哪些材料呢?(出示课件)
生回答:烧杯、带盖的瓶子、水。
⑵以小组为单位,自己制作放大镜。
师:哪位同学说一说,怎样制作放大镜呢?
生回答步骤。
⑶指导学生用自制的放大镜观察物体,看看有什么发现?
师:请同学们分组制作一个放大镜,用你自制的放大镜来观察一下身边的物体吧。
小组制作交流,谈发现。
师:你们真棒!制作的放大镜非常合格。老师这儿有些图片,里面有很多秘密,你们用自制的放大镜观察,会发现别人发现不了的许多秘密。咱们看哪组发现的秘密最多。你们敢挑战吗?下面请组长把材料筐收起来,准备好自治放大镜,为了公平起见,我说开始再开始。准备好了吗?现在挑战开始……
学生分组观察,交流、汇报。
五、课堂小结
师:你们真是太厉害了,发现了这么多的奥秘。小小的年纪竟然如此优秀!老师要给你们一个大大的赞!你们真棒!(课件出示大拇指)
师:其实我们身边还有许多放大镜,放大镜的用途非常大。请大家课下仔细寻找生活中的放大镜(出示课件),发现更多的科学奥秘,下节课我们继续探讨!
六:板书设计https://www.renjiaoshe.com/kexue/
放大镜
放大物体
*请认真填写需求信息,我们会在24小时内与您取得联系。