CSSアニメーションで「opacity: 0」と「display: none;」を適用したサンプル

<ul class="cards">
  <li class="card">
    <button class="delete-btn">✖</button>
  </li>
  <li class="card">
    <button class="delete-btn">✖</button>
  </li>
  <li class="card">
    <button class="delete-btn">✖</button>
  </li>
  <li class="card">
    <button class="delete-btn">✖</button>
  </li>
</ul>
.fade-out {
    animation: fade-out 0.25s forwards;
  }

  @keyframes fade-out {
    100% {
      opacity: 0;
      display: none;
    }
  }

  img {
    width: 100%;
  }

  .cards {
    display: flex;
    gap: 2rem;
    margin: 0;
    padding: 0;
  }

  .card {
    display: block;
    aspect-ratio: 1/1;
    width: 100%;
    background: tan;
    position: relative;
    border-radius: 1rem;
    max-width: 200px;
  }

  .card:nth-child(2) {
    background: khaki;
  }

  .card:nth-child(3) {
    background: thistle;
  }

  .card:nth-child(4) {
    background: wheat;
  }

  .delete-btn {
    position: absolute;
    top: -1rem;
    right: -1rem;
    width: 3rem;
    height: 3rem;
    border: 4px solid;
    border-radius: 100%;
    background: steelblue;
    color: white;
    font-size: 2rem;
    text-align: center;
    cursor: pointer;
  }
const deleteBtn = document.querySelectorAll('.delete-btn')
deleteBtn.forEach((btn) => {
  btn.addEventListener('click', () => {
    btn.parentElement.classList.add('fade-out')
  })
})

元記事を表示する