Das Übergangsfeuer des inneren Kindes
P粉274161593
P粉274161593 2024-04-02 14:38:29
0
1
390

Dies ist ein minimal reproduzierbares Beispiel. Das Übergangsende des „Toggle“-Hovers ist das Auslösen (was ich nicht möchte) und das vorzeitige Ausblenden des „a“.

Um den Ein-Klick-Schalter nach Abschluss der Konvertierung zu reproduzieren.

Mir wurde klar, dass das passierte, weil sich der Schalter in einem befand (ich konnte ihn nicht ändern). Gibt es eine Möglichkeit, die Konvertierung beim Umschalten zu stoppen (ohne zu erkennen, welche Konvertierung stattgefunden hat)?

Es wird zu kompliziert und es stellt sich heraus, dass Transitionend fehlerhaft ist. Ich würde lieber setTimeout verwenden (was für CSS-Übergänge etwas lächerlich ist).

var a = document.querySelector('.a')
a.style.display = 'block'
setTimeout(function() {
  a.classList.add('visible')
}, 50)

document.querySelector('.toggle').addEventListener('click', function() {
  console.log('click')
  a.addEventListener('transitionend', function cb(e) {

    console.log('end')
    a.style.display = 'none'

  })
  a.classList.remove('visible')

})
.a {
  position: relative;
  width: 200px;
  height: 200px;
  background: red;
  left: 200px;
  display: none;
  transition: left 1s;
}

.visible {
  left: 0;
}

.toggle {
  transition: color 0.2s;
}

.toggle:hover {
  color: #fff;
}
<div class="a">
  <div class="toggle">
    toggle
  </div>
</div>

P粉274161593
P粉274161593

Antworte allen(1)
P粉214176639

使用关键帧动画根本不需要 JavaScript。只需指定最终状态是什么,并确保将填充模式设置为forwards,这样最终状态就不会重置。

.a {
  display: grid;
  font: 2rem sans-serif;
  place-content: center;
  
  position: relative;
  width: 200px;
  height: 200px;
  background: red;
  
  left: 200px;
  opacity: 0;
  animation: slideIn .3s ease-in-out forwards;
}

.toggle {
  transition: color 0.2s;
}

.toggle:hover {
  color: #fff;
}

@keyframes slideIn {  
  to {
    opacity: 1;
    left: 0;
  }
}
toggle
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage