3D旋转菜单

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      cursor: url("./openhand1.png"), auto;
    }

    .big_box {

      width: 500px;

      height: 500px;

      margin: 200px auto;

      border: 1px solid red;

    }

    .box {

      -webkit-transform-style: preserve-3d;

      -moz-transform-style: preserve-3d;

      -ms-transform-style: preserve-3d;

      transform-style: preserve-3d;

      transform-origin: 200px 200px 0px;

      position: relative;


      transform: rotatex(-22deg) rotatey(0deg) rotatez(0deg)scale3d(1, 1, 1);

    }

    .box span {

      transition: all 1s linear;

    }

    span {

      display: block;

      position: absolute;

      width: 400px;

      height: 400px;

      box-sizing: border-box;

      border: 1px solid #999;
      font-size: 60px;

      border-radius: 12%;
      color: red;
    }

    .box span:nth-child(1) {
      /* background: red; */
      /* background: url("./openhand1.png"); */
      /* background-size: 100% 100%; */
      /* transform: rotatey(-90deg) translatex(-50px); */
      background: url("./openhand1.png");
      background-size: 100% 100%;
      transform: translateZ(200px);
    }

    .box span:nth-child(2) {

      /* background-color: green; */


      /* transform: rotatey(90deg) translatex(100px); */
      background: url("./openhand1.png");
      background-size: 100% 100%;
      transform: translateZ(-200PX) rotatey(180deg);
    }

    .box span:nth-child(3) {

      background: url("./openhand1.png");
      background-size: 100% 100%;
      transform: translateX(-200px) rotateY(-90deg);
    }

    .box span:nth-child(4) {
      background: url("./openhand1.png");
      background-size: 100% 100%;
      transform: translateX(200px) rotateY(90deg);
      ;
    }

    .box:hover span {

      /* opacity: 0.3; */

    }

    .box:hover {

      animation-play-state: paused;

    }
  </style>
</head>

<body>
  <div class="big_box">
    <div class="box">
      <span>1</span>
      <span>2</span>
      <span><i class="content">这是一段文本</i></span>
      <span>4</span>
    </div>
  </div>
  <script>
    move();


    //鼠标按下且移动时触发,

    function move() {

      var body = document.querySelector("body");

      var box = document.querySelector(".box");

      var content = document.querySelector(".content");
      content.onclick = function () {
        console.log(111)
      }
      var x = 0, y = 0, z = 0;

      var xx = 0, yy = 0;

      var xArr = [], yArr = [];

      window.onmousedown = function (e) {//鼠标按下事件

        body.style.cursor = 'url("./closedhand1.png"),auto';

        xArr[0] = e.clientX / 2;//获取鼠标点击屏幕时的坐标

        yArr[0] = e.clientY / 2;

        window.onmousemove = function (e) {//鼠标移动事件------------当鼠标按下且移动时触发

          xArr[1] = e.clientX / 2;//获取鼠标移动时第一个点的坐标

          yArr[1] = e.clientY / 2;

          yy += xArr[1] - xArr[0];//获得鼠标移动的距离

          xx += yArr[1] - yArr[0];


          // box.style.transform = "rotatex(" + xx + "deg) rotatey(" + yy + "deg) rotatez(0deg)scale3d(1,1,1)";
          box.style.transform = "rotatex(-22deg) rotatey(" + yy + "deg) rotatez(0deg)scale3d(1,1,1)";

          xArr[0] = e.clientX / 2;

          yArr[0] = e.clientY / 2;

        }

      };

      window.onmouseup = function () {//鼠标抬起事件------------用于清除鼠标移动事件,

        body.style.cursor = 'url("./openhand1.png"),auto';

        window.onmousemove = null;

      }

    }



  </script>
</body>

</html>
相关推荐
缓慢更新39 分钟前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易1 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
风骏时光牛马2 小时前
AI稳定性治理体系构建与疑难问题深度分析
前端
IT_陈寒3 小时前
JavaScript的this坑人实录,这次我真的记下来了
前端·人工智能·后端
开开心心就好4 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
PedroQue995 小时前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
淡漠的蓝精灵5 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
开开心心就好6 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
起个名字费劲死了6 小时前
Halcon学习一:骰子识别
前端·python·学习
大江东去浪淘尽千古风流人物6 小时前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速