CSS 动画和 z-index

CSS animations and z-index

我正在开发一款类似于“2048”的 JavaScript 游戏。它有一个由几层 div 组成的“图块”表格显示。我想使用 CSS 动画使选定的图块“弹跳”。 (弹跳需要能够在四个主要方向中的每一个方向上发生:向上、向下、向左或向右弹跳,具体取决于游戏的状态。)

我的问题是,当我附加动画时,我看到内容正确地弹跳到所选动画块的“前面”和左侧,但它错误地弹跳到其右侧和下方的图块“后面” .这是一个说明问题的 JSFiddle:

https://jsfiddle.net/atqwc8er/2/

我希望弹跳的蓝色方块“2”出现在方块“3”前面,就像它已经出现在方块“1”前面一样。谁能帮我做到这一点?

.tile {
  position: absolute;
  width: 50px;
  height: 50px;
  background-color: red;
}

.tile-inner {
  text-align: center;
  z-index: 10;
}

.tile-1-0 {
  transform: translate(0px, 0px);
}

.tile-1-1 {
  transform: translate(55px, 0px);
}

.tile-1-2 {
  transform: translate(110px, 0px);
}

.selected .tile-inner {
  background-color: blue;
  animation: back-and-forth 0.5s infinite alternate;
  z-index: 99; /* not working */
}

@keyframes back-and-forth {
  from {
    transform: translateX(-25px);
  }
  to {
    transform: translateX(25px);
  }
}
<div class="tile-container">
  <div class="tile tile-1-0">
    <div class="tile-inner">1</div>
  </div>
  <div class="tile tile-1-1 selected">
    <div class="tile-inner">2</div>
  </div>
  <div class="tile tile-1-2">
    <div class="tile-inner">3</div>
  </div>
</div>

改为增加 .selectedz-index

.tile {
  position: absolute;
  width: 50px;
  height: 50px;
  background-color: red;
}

.tile-inner {
  text-align: center;
  z-index: 10;
}

.tile-1-0 {
  transform: translate(0px, 0px);
}

.tile-1-1 {
  transform: translate(55px, 0px);
}

.tile-1-2 {
  transform: translate(110px, 0px);
}

.selected .tile-inner {
  background-color: blue;
  animation: back-and-forth 0.5s infinite alternate;
}
.selected {
  z-index: 99;
}

@keyframes back-and-forth {
  from {
    transform: translateX(-25px);
  }
  to {
    transform: translateX(25px);
  }
}
<div class="tile-container">
  <div class="tile tile-1-0">
    <div class="tile-inner">1</div>
  </div>
  <div class="tile tile-1-1 selected">
    <div class="tile-inner">2</div>
  </div>
  <div class="tile tile-1-2">
    <div class="tile-inner">3</div>
  </div>
</div>

相关问题以获取更多详细信息并了解为什么它不能与 .title-inner 一起使用:

同级元素需要添加z-index属性,请将z-index属性添加到.title-1-1而不是.title-inner