<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>3D</title>
</head>
<style type="text/css">
* {
margin: 0px;
padding: 0px;
}
.container {
perspective: 1500px;
}
.images {
100px;
height: 100px;
margin: 350px auto;
position: relative;
transform: rotateX(-20deg);
transform-style: preserve-3d;/*切换 3D 效果*/
}
.images img {
position: absolute;
box-shadow: 0 0 8px #eee;
}
</style>
<body>
<div class="container">
<div id="wrap" class="images">
<img src="3Dimg/thumb1.jpg">
<img src="3Dimg/thumb2.jpg">
<img src="3Dimg/thumb3.jpg">
<img src="3Dimg/thumb4.jpg">
<img src="3Dimg/thumb5.jpg">
<img src="3Dimg/thumb6.jpg">
<img src="3Dimg/thumb7.jpg">
<img src="3Dimg/thumb8.jpg">
<img src="3Dimg/thumb9.jpg">
<img src="3Dimg/thumb10.jpg">
</div>
</div>
</body>
<script type="text/javascript">
window.onload = function() {
var wrap = document.getElementById("wrap");
var images = document.getElementsByTagName("img");
var length = images.length;
var deg = 360 / length;
for (var i = 0; i < length; i++) {
images[i].style.transform = "rotateY(" + deg * i + "deg) translateZ(240px)";
images[length - i - 1].style.transition = "1s " + 0.2 * i + "s";
}
// 点击坐标
var clickX, clickY;
// 移动坐标
var moveX, moveY;
// 移动距离坐标
var minusX, minusY;
// 旋转角度
var rotateX = 0,
rotateY = -20;
var timer = null;
// 鼠标按下事件
document.onmousedown = function(e) {
clickX = e.clientX;
clickY = e.clientY;
// 鼠标移动
this.onmousemove = function(e) {
moveX = e.clientX;
moveY = e.clientY;
// 移动距离
minusX = moveX - clickX;
minusY = moveY - clickY;
// 旋转角度,避免旋转太快故* 0.1
rotateX += minusX * 0.1;
rotateY -= minusY * 0.1;
// 中心轴旋转
wrap.style.transform = "rotateX(" + rotateY + "deg) rotateY(" + rotateX + "deg)"
clickX = moveX;
clickY = moveY;
}
// 鼠标释放
this.onmouseup = function() {
this.onmousemove = null;
// 旋转惯性
timer = setInterval(function() {
minusX *= 0.99;
minusY *= 0.98;
// 旋转角度
rotateX += minusX * 0.2;
rotateY -= minusY * 0.1;
// 中心轴旋转
wrap.style.transform = 'rotateX(' + rotateY + 'deg) rotateY(' + rotateX + 'deg) ';
if (Math.abs(minusX) < 0.1 && Math.abs(minusY) < 0.1) {
clearInterval(timer);
}
}, 10);
}
}
}
</script>
</html>