Das Beispiel, das ich neu erstellen möchte, ist dieses:
https: //vuejs.org/examples/#list-transition
Hier ist ein grundlegender Test. Ich versuche nicht, den gesamten Übergang der Elemente anzuzeigen, sondern nur den Übergang, um den Raum zu füllen links durch den Artikel oben. Ich habe den Elementen standardmäßig die Fade-Move-Klasse hinzugefügt, um Probleme mit dem Timing zu vermeiden. Aber ich bin mir nicht sicher, warum, wenn Absolut auf Element 1 angewendet wird, Element 2 nach oben springt, um den Raum auszufüllen, anstatt sanft nach oben zu gleiten wie im Vue-Beispiel.
Test.tsx
Code: Select all
import React, { useState } from 'react';
import classNames from 'classnames';
import './app.css';
const TransitionExample: React.FC = () => {
const [show, setShow] = useState(true);
const toggleShow = () => {
setShow(prevShow => !prevShow);
};
return (
Toggle Element
Element 1
Element 2
);
};
export default TransitionExample;
Code: Select all
.container {
position: relative;
padding: 0;
list-style-type: none;
}
.item {
width: 100%;
height: 60px;
background-color: #f3f3f3;
border: 1px solid #666;
box-sizing: border-box;
transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1); /* Apply transition to all items by default */
}
.fade-move,
.fade-enter-active,
.fade-leave-active {
transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1);
}
/* 2. declare enter from and leave to state */
.fade-enter-from,
.fade-leave-to {
opacity: 0;
transform: scaleY(0.01) translate(30px, 0);
}
/* 3. ensure leaving items are taken out of layout flow so that moving
animations can be calculated correctly. */
.fade-leave-active {
position: absolute;
}