javascript 在更改位置的同时更改div的zIndex

siv3szwd  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(159)

现在有很多问题,我有点困惑

<!DOCTYPE html>
<html>
<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>Orbit </title>

<style>
#container {
    width: 400px;
    height: 400px;
    position: relative;
    background: green;
    z-index: 0;
}
#animate{
    width: 50px;
    height: 50px;
    position: absolute;
    background-color: grey;
    border-radius: 100%;
    z-index: 2;
}
#earth {
    background: green;
    border-radius: 50%;
    background-image: url("earth.png");
    background-position: center;
    background-repeat: no-repeat;
    background-size: 160%;
    float: left;
    z-index: -1;
    position: relative;
}
body {
    margin-top: 15%;
    background-image: url("space.gif"); 
    background-repeat: no-repeat;
    background-size: 100%;
}
.rainbow-button {
  width:calc(20vw + 6px);
  height:calc(8vw + 6px);
  max-width: 100px;
  max-height: 50px;
  background-image: linear-gradient(90deg, #00C0FF 0%, #FFCF00 49%, #FC4F4F 80%, #00C0FF 100%);
  border-radius:5px;
  display:flex;
  align-items:center;
  justify-content:center;
  color: white;
  font-weight: bold;
  text-size: 50px;
}

.rainbow-button:hover {
  animation:slidebg 2s linear infinite;
}

@keyframes slidebg {
  to {
    background-position:20vw;
  }
}
</style>
</head>
<center>
<body>
    <div>
        <p><button onclick="myMove()" class="rainbow-button" alt="Button">Click Me</button></p>
        <p><button onclick="stop()" class="stop-button" alt="Button">Stop</button></p> <!-- ignore this, it's not used -->
        <div id="container">
            <div id="animate" style="position: relative;"><img src="moon.png" style="max-width:100%"></div>
        </div>
    </div>
    <div id="earth"></div>

  <script>
    function myMove() {
      const container = document.getElementById('container');
      const box = document.getElementById('animate');
      let t = setInterval(move, 1);
      let pos = 1;
      let test = true;
      let zdex = "2";

      function move() {
        box.style.left = `${pos}px`;
        box.style.top = `${pos}px`;
        if (test) {
          pos++; /* mov down */
        } else {
          pos--; /* move up */
        }
        /* update the direction when you reach the top or bottom limit*/

        if (pos >= 350) {
          test = false;
          zdown()
        } else if (pos <= 0) {
          test = true;
          zup()
        }
      }

      function zdown() {
        box.style.zIndex = "-10"; /* trying to make it go under the container on the way back */
      }

      function zup() {
        box.style.zIndex = "2"; /* trying to make it go back to it's original position for the journey across */
      }
    }
  </script>
</body>
</center>
</html>

我希望移动的对象在上面的zindex中以第一个方向移动,然后在下面的zindex中以返回的方向移动,以创建一种类似于“轨道”的动画。下面是我想完成的一个例子(在相反的对角线上):https://assets1.cbsnewsstatic.com/hub/i/2015/08/05/7a86d00b-3b24-497e-8cab-14ca3a735a46/dscovrepicmoontransitfull-small.gif

nwnhqdif

nwnhqdif1#

你的解决方案在这里,实际上它不是用于z索引,它是因为#animate部分位置没有给出而发生的,我更新了它,并添加了一个虚拟div,以便现在z索引可以清楚地看到它正在工作。

<!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>Java Script </title>
</head>


<body>
  <div>
    <p><button onclick="myMove()" class="rainbow-button" alt="Button">Click Me</button></p>
    <p><button onclick="stop()" class="stop-button" alt="Button">Stop</button></p> /* ignore this, it's not used */
    <div id="container">

      <div id="animate" style="position: relative;"><img src="data:image/png;base64,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"
          style="max-width:100%"></div>
    </div>
  </div>
  <div style="width: 100vw; height: 100vh; position: absolute; background-color: gray;"> </div>

  <script>
    function myMove() {
      const container = document.getElementById('container');
      const box = document.getElementById('animate');
      let t = setInterval(move, 1);
      let pos = 1;
      let test = true;
      let zdex = "2";

      function move() {
        box.style.left = `${pos}px`;
        box.style.top = `${pos}px`;
        if (test) {
          pos++; /* mov down */
        } else {
          pos--; /* move up */
        }
        /* update the direction when you reach the top or bottom limit*/

        if (pos >= 350) {
          test = false;
          zdown()
        } else if (pos <= 0) {
          test = true;
          zup()
        }
      }

      function zdown() {
        box.style.zIndex = "-10"; /* trying to make it go under the container on the way back */
      }

      function zup() {
        box.style.zIndex = "2"; /* trying to make it go back to it's original position for the journey across */
      }
    }
  </script>
</body>

</html>

相关问题