Saya cuba mencipta semula animasi ini dalam React menggunakan HTML dan CSS, menggunakan gaya sebaris dan TypeScript. Saya sedang mencipta objek dengan maklumat gaya dan merujuknya dalam atribut gaya. Di bawah ialah kod. Ia tidak berfungsi, saya tidak pasti apa yang saya lakukan salah, saya mengesyaki gaya tidak ditakrifkan dan dirujuk dengan betul?
Ini adalah contoh Codepen asal yang saya cuba tulis semula: Animasi Apple
Ini kod saya
import React from 'react'; const styles = { '@keyframes showTopText': { '0%': { transform: 'translate3d(0, 100%, 0)' }, '40%, 60%': { transform: 'translate3d(0, 50%, 0)' }, '100%': { transform: 'translate3d(0, 0, 0)' }, }, '@keyframes showBottomText': { '0%': { transform: 'translate3d(0, -100%, 0)' }, '100%': { transform: 'translate3d(0, 0, 0)' }, }, animatedTitle: { color: '#222', fontFamily: 'Roboto, Arial, sans-serif', height: '90vmin', left: '50%', top: '50%', transform: 'translate(-50%, -50%)', width: '90vmin', }, 'animatedTitle > div': { height: '50%', overflow: 'hidden', position: 'absolute', width: '100%', }, 'animatedTitle > div div': { fontSize: '12vmin', padding: '2vmin 0', position: 'absolute', }, 'animatedTitle > div div span': { display: 'block', }, 'animated-title > div.text-top': { borderBottom: '1vmin solid #000', top: 0, }, 'animatedTitle > div.text-top div': { animation: 'showTopText 1s', animationDelay: '0.5s', animationFillMode: 'forwards', bottom: 0, transform: 'translate(0, 100%)', }, 'animatedTitle > div.text-top div span:first-child': { color: '#767676', }, 'animatedTitle > div.text-bottom': { bottom: 0, }, 'animatedTitle > div.text-bottom div': { animation: 'showBottomText 0.5s', animationDelay: '1.75s', animationFillMode: 'forwards', top: 0, transform: 'translate(0, -100%)', }, }; function Design() { return ( <div style={styles.animatedTitle}> <div style={styles['animatedTitle > div.text-top div']}> <div> <span>mimicking</span> <span>apple's design</span> </div> </div> <div style={styles['animatedTitle > div.text-bottom']}> <div>for the win!</div> </div> </div> ); } export { Design };
Anda boleh cuba menggunakan
styled-components
来使您的组件更灵活和兼容。我使用styled-components
yang mereplikasi contoh codepen dan menjadikannya mudah untuk dilanjutkan.Oleh itu, kedua-dua
, yang sepatutnya bilanganTopAnimateBlock
danBottomAnimateBlock
kedua-duanya mempunyai atributTopAnimateBlock
和BottomAnimateBlock
都有 numOfLine 属性,表示块内有多少行。在BottomAnimateBlock
中的第二个属性是 delayTopLine,它应该与TopAnimateBlock
numOfLine, yang menunjukkan bilangan baris di dalam blok. Sifat kedua dalamBottomAnimateBlock
ialah delayTopLinenumOfLine
/TextStyle
yang sama dalamTopAnimateBlock
memandangkan kita perlu menunggu baris atas untuk dimainkan. Selain itu, anda boleh menukar warna teks dengan mudah melalui atribut color dan lulus nilai warna, HEX warna atau rgba()hsla()
.TextAnimation.tsx
TextStyle
TopAnimateBlock
中将 numOfLine 从2更改为3,在BottomAnimateBlock
komponen baharu MenukarTopAnimateBlock
danBottomAnimateBlock
🎜Dan gantikan kerangka utama dengan klip berikut: 🎜 🎜