![](/img/trans.png)
[英]How to change state of button on click and revert back to the original state when clicked again in React?
[英]How to return an animation to it's original state if the button is clicked again?
现在,这可能是一个愚蠢的问题(可能是),但我只是无法解决这个问题。 因此,我有一个导航栏,该导航栏水平和垂直居中,其中带有一个按钮。 如果单击该按钮,则导航栏会以动画形式显示在页面顶部,并留有一点空白。 我要达到的目的是,再次单击该按钮时,导航栏将动画回到其原始位置。 我已经尝试了很多行代码,但仍然无法正确处理(甚至不应该那么难)。 任何帮助表示赞赏。
JavaScript:
$("#btn").click( function(event){
$("#wrapper").animate({
'top': 100
}, 400)
});
CSS:
#wrapper {
position:absolute;
top:50%;
margin-top:-100px;
left:0;
width:100%;
}
#nav {
margin:20px auto;
height:200px;
width:900px;
text-align:center;
background-color:#bca;
border:1px solid green;
}
您可以使用类似这样的方法:
$("#btn").click( function(event){
this.toggle = !this.toggle;
$("#wrapper").stop().animate({
'top': this.toggle?100:"50%"
}, 400)
});
您可以引入一个clicked
变量,它可以告诉您是否已单击(或类似),然后在第一次单击时,向上移动,在第二次单击时,向下移动等等。
var clicked = false;
$("#btn").click( function(event){
clicked = !clicked;
if(clicked)
{
$("#wrapper").animate({
'top': '-=100'
}, 400)
}
else
{
$("#wrapper").animate({
'top': '+=100'
}, 400)
}
});
您可以使用jquery UI switchClass插件来实现。 或以丑陋的方式更新您的代码,例如:
$("#btn").click( function(event) {
var top = $("#wrapper").css('top') == '100px' ? '50%' : 100;
$("#wrapper").animate({
'top': top
}, 400)
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.