正方体鼠标旋转

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  .c {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    transform-style: preserve-3d;
    perspective: 1000px;
    perspective-origin: 150% -50%;


  }

  .container {
    position: relative;
    width: 200px;
    height: 200px;
    transform-style: preserve-3d;
    perspective: 1000px;
    perspective-origin: 150% -50%;

  }

  .item {
    position: absolute;
    width: 200px;
    height: 200px;

  }

  .one {
    background-color: blue;
    opacity: 0.3;
    transform: translateZ(100px);
  }

  .two {
    background-color: pink;
    opacity: 0.3;
    transform: rotateY(180deg) translateZ(100px);


  }

  .three {
    background-color: purple;
    opacity: 0.3;
    transform: rotateY(90deg) translateZ(100px);

  }

  .four {
    background-color: red;
    opacity: 0.3;
    transform: rotateY(-90deg) translateZ(100px);

  }

  .five {
    background-color: yellow;
    opacity: 0.3;
    transform: rotateX(90deg) translateZ(100px);
  }

  .six {
    background-color: green;
    opacity: 0.3;
    transform: rotateX(-90deg) translateZ(100px);
  }
</style>

<body>
  <div class="c">
    <div class="container">
      <div class="one item"></div>
      <div class="two item"></div>
      <div class="three item"></div>
      <div class="four item"></div>
      <div class="five item"></div>
      <div class="six item"></div>
    </div>

  </div>
</body>
<script>
  const ele = document.querySelector('.container')
  ele.addEventListener('mousedown', function (e) {

    let p1 = e.pageX - ele.offsetLeft
    let p2 = e.pageY - ele.offsetTop

    document.addEventListener('mousemove', move)
    function move(e) {
      console.log('1111');
      // ele.style.left = e.pageX - p1 + 'px'
      // ele.style.top = e.pageY - p2 + 'px'
      ele.style.transform = "rotateX(" + (e.pageX - p1) + "deg) rotateY(" + (e.pageY - p2) + "deg) rotateZ(0deg)";

    }
    document.addEventListener('mouseup', function () {
      document.removeEventListener('mousemove', move)
    })
  })
</script>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好的主意!以下是一个使用正方体旋转特效的炫酷动画示例: 1. 创建一个正方体 首先,我们需要创建一个简单的正方体。使用3D软件(如Blender或Maya)或代码(如CSSJavaScript)创建一个3D正方体。 2. 定义旋转动画 接下来,我们需要定义正方体旋转动画。我们可以使用CSSJavaScript来实现这一点。以下是一个使用CSS的示例: ``` @keyframes rotate { 0% { transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); } 100% { transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg); } } .cube { animation: rotate 5s linear infinite; } ``` 这个CSS代码块将创建一个名为"rotate"的动画,将正方体在X、Y和Z轴上旋转360度。我们将动画设置为线性,持续5秒,并使其无限循环。 3. 添加材质和光源 为了使正方体看起来更加逼真,我们需要添加材质和光源。这可以通过3D软件或代码实现。我们可以为正方体添加一个简单的白色材质,并在场景中添加一个点光源。 4. 渲染动画 现在,我们已经准备好渲染动画了!我们可以使用3D软件将场景渲染成视频或GIF,或者使用CSSJavaScript在网页上渲染动画。 这是一个使用CSSJavaScript的示例: HTML: ``` <div class="scene"> <div class="cube"></div> </div> ``` CSS: ``` .scene { width: 400px; height: 400px; perspective: 1000px; } .cube { width: 200px; height: 200px; background-color: white; position: relative; transform-style: preserve-3d; animation: rotate 5s linear infinite; } @keyframes rotate { 0% { transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); } 100% { transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg); } } ``` JavaScript: ``` const cube = document.querySelector('.cube'); let mouseX = 0; let mouseY = 0; document.addEventListener('mousemove', e => { mouseX = (e.clientX - window.innerWidth / 2) / 8; mouseY = (e.clientY - window.innerHeight / 2) / 8; }); function render() { cube.style.transform = `rotateX(${mouseY}deg) rotateY(${mouseX}deg)`; requestAnimationFrame(render); } render(); ``` 这个示例将创建一个带有3D透视效果的场景,并在其中放置一个旋转正方体。我们还添加了一些JavaScript代码,使正方体随着鼠标的移动而旋转,从而增加了交互性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值