【发布时间】:2019-12-17 07:17:35
【问题描述】:
我正在学习 React - 尽管我不认为这是一个 React 问题 - 我已经为菜单按钮创建了一个 onClick 动画,它可以工作,但动画在页面首次加载时正在运行。如何防止动画运行页面初始加载。
我已经尝试了大部分在 SE 上找到的 css 解决方案,like this one,但它们都不起作用。这让我相信我的反应代码可能存在问题。
class NavButton extends Component{
constructor(props) {
super(props);
this.state = {
value: false
};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState( { value : !this.state.value } );
}
render(){
return (
<div>
<div id="mobile-nav-menu" onClick={this.handleClick}>
<div id="nav-toggle" className="nav-toggle-white"><span></span></div>
</div>
<div id="index-mobile-navigation-container" className={this.state.value ? "width" :"width2"}>
<div id="index-mobile-navigation">
Blog
</div>
</div>
</div>
);
}
}
export default NavButton
#index-mobile-navigation-container {
height: 100%;
background-color: #87c0c4;
z-index: 1;
position: absolute;
right: 0%;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
overflow: hidden;
width: 0px;
}
#index-mobile-navigation {
position: absolute;
top: 100px;
left: 40px;
font-size: 25px;
font-family: "Rubik";
color: #FFFFFF;
}
#index-mobile-navigation:hover {
cursor: pointer;
}
.width {
animation: 1s in-out forwards;
-webkit-animation: 1s in-out forwards;
}
.width2 {
animation: 1s out forwards;
-webkit-animation: 1s out forwards;
}
@keyframes in-out {
0% {
width: 0;
}
100% {
width: 400px;
}
}
@keyframes out {
0% {
width: 400px;
}
100% {
width: 0px;
}
}
【问题讨论】:
-
您的默认状态为 false,因此在加载时设置“width2”动画。
-
啊,对。谢谢。但这不是在状态之间切换所需要的吗?
-
是的,但是在页面加载之后。理想情况下,您必须在动作上设置动画类。因此,您在单击时为过渡“宽度”添加动画类,并添加第二个动画过渡“宽度2”
-
与答案无关,只是为了概述来自stackoverflow.com/questions/18023859/…的小提琴jsfiddle.net/bmh5g/12