html5图片放大展示
一.html编写
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>商品放大效果</title>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<div id="box">
<!--默认商品小图-->
<div class="posi">
<!--小图部分-->
<img src="img/TB2400x400.jpg" />
<!--span挡板部分-->
<span class="move"></span>
</div>
<!--商品大图的部分-->
<div class="bigimg">
<img id="bimg" src="img/TB2.jpg" />
</div>
</div>
</body>
<!--导入-->
<script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
<!--可以支持编写js代码的环境-->
<script type="text/javascript" >
$(function(){
//1.获取小图片容器
var $gs = $("#box .posi"); //div class= "posi"
//2.获取挡板容器
var $gsmove = $("#box span");
//3.获取存放大照片容器
var $gsImg = $("#box .bigimg");
//4.给小图片容器获取鼠标浮动的触发事件
$gs.hover(function(){
//把挡板显示出来,把存放大照片的容器显示出来
//让挡板渐入 10毫秒
$gsmove.fadeIn(10);
$gsImg.fadeIn(10);
},function(){//当鼠标不在悬浮范围内后执行。
$gsmove.fadeOut(10);
$gsImg.fadeOut(10);
});
//5.获取鼠标移动的坐标 - 控制挡板的移动
$gs.mousemove(function(e){
console.log("鼠标的坐标为:("+e.clientX+","+e.clientY+")");
//获取鼠标的坐标参数
var cx =e.clientX;
var cy =e.clientY;
//获取小图容器的坐标
//offset:当前元素针对于相对浏览器body的位置
var gl = $gs.offset().left;//获取X坐标
var gt = $gs.offset().top;//获取到Y坐标
console.log("小容器的坐标为:("+gl+","+gt+")")
//挡板相对要移动的位置
//cx - gl >=0 ;X轴方向要移动的距离
//cy - gt >=0 ;Y移动轴方向要距离
//获取挡板的宽高的一半
var mw = $gsmove.width()/2;
var mh = $gsmove.height()/2;
//做判断,挡板的移动距离不能未赋值
var mleft = cx-gl-mw;
var mtop = cy-gt-mh;
//小容器的宽高
var gsw = $gs.width();
var gsh = $gs.height();
if(mleft<=0){
mleft = 0;
}else if(mleft>=gsw-mw*2){
mleft = gsw - mw*2;
}
if(mtop<=0){
mtop = 0;
}else if(mtop>=gsh - mh*2){
mtop = gsh-mh*2
}
//挡板要移动的位置
$gsmove.css({"left":mleft,"top":mtop});
//根据移动的比例控制大图的移动比例 ;0<=2<=10 = 2/10
var l_b = mleft/(gsw-mw*2);
var t_b = mtop/(gsh-mh*2);
//大图要移动的距离
var b_left = l_b*($("#box .bigimg img").width() - $gsImg.width());
var b_top = t_b*($("#box .bigimg img").height() - $gsImg.height());
console.log("大图要移动的距离:"+b_left+","+b_top)
$("#bimg").css({"left":-b_left,"top":-b_top});
// $("#box .bigimg img").css({"left":-b_left,"top":-b_top});
});
});
</script>
</html>
二.样式
*{
margin: 0px;
padding: 0px;
}
#box{
width: 400px;
height: 400px;
background: aquamarine;
margin-top: 100px;
margin-left: 200px;
position: relative;
}
.posi{
width: 266px;
height: 400px;
margin: 0px auto;
position: relative;
}
.posi span{
position: absolute;
left: 0px;
top: 0px;
width: 133px;
height: 133px;
display: none;
background:url(../img/Tb2.png);
}
.bigimg{
width: 400px;
height: 400px;
background: #7FFFD4;
/*超出容器的部分隐藏*/
overflow: hidden;
position: absolute;
left: 400px;
top: 0px;
display: none;
}
#bimg{
position: absolute;
}
三.效果展示