Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
于經常網購的網友們,現在很多網站都有放大鏡功能,每當你看到商品的時候,鼠標移動到圖片時,就會有放大效果,知道是什么原理嗎?小猿圈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小時內與您取得聯系。