js滑鼠拖動立方體3D運動效果

admin發表於2017-04-16

分享一段程式碼例項,它實現了滑鼠拖動立方體進行3D運動效果。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
#box {
  width: 200px;
  height: 200px;
  margin: 200px auto;
  background: #ccc;
  position: relative;
  transform: perspective(800px) rotateY(-60deg) rotateX(45deg);
  transform-style: preserve-3d;
}
#box div {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  background-size: cover;
  -webkit-box-shadow: 0 0 100px #5fbcff;
  opacity: 0.8;
}
.front {
  transform: translateZ(100px);
  background: #f00;
}
.back {
  transform: translateZ(-100px);
  background: #20ab4f;
}
.top {
  transform: translateY(-100px) rotateX(90deg);
  background: #ff7800;
}
.bottom {
  transform: translateY(100px) rotateX(-90deg);
  background: #00f6ff;
}
.left {
  transform: translateX(-100px) rotateY(90deg);
  background: #0084ff;
}
.right {
  transform: translateX(100px) rotateY(-90deg);
  background: #b400ff;
}
</style>
<script>
window.onload = function() {
  var oDiv = document.querySelector("#box");
  var y = -60;
  var x = 45;
  oDiv.onmousedown = function(ev) {
    var ev = ev || event;
    var disX = ev.clientX - y;
    var disY = ev.clientY - x;
    document.onmousemove = function(ev) {
      var ev = ev || event;
      y = ev.clientY - disY;
      x = ev.clientX - disX;
      oDiv.style.transform = 'perspective(800px) rotateX(' + x + 'deg) rotateY(' + y + 'deg)';
 
    }
    document.onmouseup = function() {
      document.onmouseup = null;
      document.onmousemove = null;
    }
  }
}
</script>
</head>
<body>
  <div id="box">
    <div class="front"></div>
    <div class="back"></div>
    <div class="top"></div>
    <div class="bottom"></div>
    <div class="left"></div>
    <div class="right"></div>
  </div>
</body>
</html>

上面的程式碼實現了我們的要求,更多內容參閱相關閱讀。

相關閱讀:

(1).transform可以參閱CSS3 transform一章節。

(2).perspective()可以參閱CSS3 perspective一章節。

(3).transform-style可以參閱CSS3 transform-style一章節。

(4).background-size可以參閱background-size一章節。

(5).box-shadow可以參閱CSS3 box-shadow一章節。

(6).document.querySelector()可以參閱document.querySelector()一章節。

(7).onmousedown事件可以參閱javascript mousedown事件一章節。

(8).onmousemove事件可以參閱javascript mousemove事件一章節。

(9).clientX可以參閱javascript event.clientX一章節。

相關文章