<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片放大镜效果</title>
<link rel="stylesheet" type="text/css" href="css/reset.css">
<style type="text/css">
#demo{
width: 350px;
margin: 20px auto;
border: 1px solid #666;
clear: both;
position: relative;
height: 350px;
}
img{
float: left;
}
#tep{
width: 250px;
height: 250px;
border: 1px solid #666;
position: absolute;
top: -1px;
left: 362px;
overflow: hidden;
display: none;
}
#bar{
display: inline-block;
width: 100px;
height: 100px;
border: 1px solid #ccc;
position: absolute;
top: 0px;
left: 0px;
background-color: #fff;
opacity: 0.4;
filter: alpha(opacity=40);
display: none;
cursor: crosshair;
}
</style>
</head>
<body>
<div id="demo">
<img src="img/small.jpg">
<span id="bar">
</span>
<div id="tep">
<img src="img/big.jpg">
</div>
</div>
<script type="text/javascript">
window.onload = function (){
var demo = document.getElementById("demo");
var bar = document.getElementById("bar");
var tepImg = document.getElementById("tep").getElementsByTagName("img")[0];
demo.onmouseover = bar.onmousemove = function (event){
// 移入的时候 显示出来 并判断 bar 的位置
bar.style.display = tep.style.display = "block";
barPosition(event);
}
// 判断bar的位置
function barPosition(event){
var event = event || window.event;
// 位置判断 画图就懂了
bar.style.left = event.clientX - demo.offsetLeft - bar.offsetWidth/2 + "px";
bar.style.top = event.clientY - demo.offsetTop - bar.offsetHeight/2 + "px";
// 超过边界
if (bar.offsetLeft < 0 ) {
bar.style.left = "0px"
}
if (bar.offsetLeft + bar.offsetWidth > 350) {
bar.style.left = 350 - bar.offsetWidth + "px";
}
if (bar.offsetTop < 0 ) {
bar.style.top = "0px"
}
if (bar.offsetTop + bar.offsetHeight > 350) {
bar.style.top = 350 - bar.offsetHeight + "px";
}
// 通过 bar的位置 在判断 tep img的位置
tepImgPosition(bar.offsetLeft,bar.offsetTop);
}
function tepImgPosition (left,top){
// 乘以他们的一个比值
tepImg.style.marginLeft = - left * ((800-250)/(350-100)) + "px";
tepImg.style.marginTop = - top * ((800-250)/(350-100))+ "px";
}
bar.onmouseout = demo.onmouseout = tepImg.onmousemove = function (){
bar.style.display = tep.style.display = "none";
return false;
}
}
</script>
</body>
</html>
javascript 实现图片放大镜效果
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 随着科技的发展,网购已成为大家生活中必不可少的一个模式,各种电商平台也如雨后春笋般涌现出来,今天我们就来用原生js...
- 游记一般是依照时间和地点逐一推进写的。这次把住宿这条线单独提出来,实在是给我的感触太深,每次住宿又十分有特点,和大...