【发布时间】:2021-05-27 19:37:02
【问题描述】:
首先让我展示一下我的代码:
import { menuContext } from '../../../../Home';
import Hamburger from '../Hamburger';
function Nav() {
const {hamburgerToggle} = useContext(menuContext);
let dataObject = {
colorAbout: 'orange-rowan',
colorContact: 'white',
innerText: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Volutpat, ullamcorper non ac fermentum dignissim diam molestie. Commodo quam sed suscipit sem. Ut aliquet neque amet, in at. Ut fermentum lectus sit tristique tincidunt viverra non.'
}
const [data, setData] = useState(dataObject);
const setDataContact = () => {
setData({
colorAbout: 'white',
colorContact: 'orange-rowan',
innerText: 'jopie',
})
}
const setDataAbout = () => {
setData({
colorAbout: 'orange-rowan',
colorContact: 'white',
innerText: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Volutpat, ullamcorper non ac fermentum dignissim diam molestie. Commodo quam sed suscipit sem. Ut aliquet neque amet, in at. Ut fermentum lectus sit tristique tincidunt viverra non.',
})
}
return (
<>
<div className="bg-black z-50 border-r border-brokenblack-rowan w-full md:w-nav absolute left-0 h-14 md:h-full flex items-center pl-5 md:pl-0 md:justify-center">
<Hamburger hamburger="arrowturn" />
</div>
<div className={`nav-transition text-xl font-light bg-black h-full w-full md:w-4/12 -left-full opacity-0 z-40 md:z-10 absolute ${hamburgerToggle} flex flex-col justify-center`}>
<div className={`pl-5 pr-5 md:pl-nav md:pr-65`}>
<ul className="mb-10">
<li onClick={setDataAbout} className={`cursor-pointer inline mr-5 text-${data.colorAbout}`}>about</li>
<li onClick={setDataContact} className={`cursor-pointer inline mr-5 text-${data.colorContact}`}>contact</li>
</ul>
<p className="text-white font-light text-base mb-10 minimum-height">
{data.innerText}
</p>
<a href="#" className="text-sm text-gray-rowan">cv bekijken</a>
</div>
<div className="absolute bottom-0 h-14 border-t border-brokenblack-rowan w-full pl-20 flex flex-col justify-center">
</div>
</div>
</>
)
}
export default Nav;
如您所见,我有 2 个名为 about 和 contact 的菜单项。当我点击其中任何一个时,我状态中的对象会发生变化,因此我页面上的信息也会发生变化。 (这是这样做的好方法吗?)。
现在我想做的是在{data.innerText} 上实现一个淡入淡出动画,所以当状态改变时,它会从旧文本淡入新文本。我尝试了多种方法(React Spring、基于类的 CSS 转换、普通 CSS 转换),但我就是无法理解它!
有人可以帮我解决这个问题吗?提前致谢。
【问题讨论】:
标签: javascript css reactjs animation