如何使用css display:none切换动画
希望这可以将缺少缺口的post联系在一起,因为我遇到了很多麻烦。
尝试切换div,使其在每次按下按钮时滑出视图并返回视图。 最终会有两个或更多的分隔线同时滑出。 我正在使用:
//css display {visibility:hidden}
然后检查代码:
//js$ ("#initiate").click( function(event) { $("#initiate").click( function(event) { if ($("#nav").is(":hidden")) { $("#nav").stop().animate({ right: '520px' }, 1300); } else { $("#nav").stop().animate({ right: '320px' }, 1300); } });
倍数问题:1。仅当可见性设置为“无”以外的其他内容时,幻灯片才有效。 2.只滑出,而不是退回。
我怎么能让这个人工作呢?
http://jsfiddle.net/c48vdqf6/2/
采用稍微不同的方法,我宁愿用css3做动画,感谢转换,然后使用javascript / jquery切换类:
https://jsbin.com/yovaqo/edit?html,css,js,output
test
它引入了较少的代码复杂性,并且从长远来看更容易维护(并且具有多个滑动div等)。
display
属性无法设置动画,这通常是开发人员陷入困境的一点,但CSS只是不允许它。
您必须设置right
属性,使其不在屏幕上,并在需要时动画以滑入屏幕,就像您在小提琴中所做的那样。
编辑
至于
只滑出,而不是退回。
只需使用一个类来确定元素的位置
像这样:
$("#initiate").click(function(event) { if ($("#nav").hasClass("hidden")) { $("#nav").stop().animate({ right: '-320px' }, 1300); } else { $("#nav").stop().animate({ right: '520px' }, 1300); } $("#nav").toggleClass("hidden") });
更新小提琴
希望这可以帮助!
只需使用类或标志来确定元素的位置,而不是检查元素是否可见
$("#initiate").click(function(event) { if ($("#nav").hasClass("hidden")) { $("#nav").stop().animate({ right: '-320px' }, 1300); } else { $("#nav").stop().animate({ right: '520px' }, 1300); } $("#nav").toggleClass("hidden") });
小提琴
我改变了字体颜色。 此外,随意将if语句更改为更复杂的内容。 $(“#initiate”)。click(function(event){
http://jsfiddle.net/c48vdqf6/2/
if ($("#nav").css('right') == "320px") { $("#nav").stop().animate({ right: '-320px' }, 1300); } else { $("#nav").stop().animate({ right: '320px' }, 1300); } });
所以我用CSS而不是Javascript来做这个,然后使用Javascript添加和删除一类’show’或类似的东西。 我刚刚为canvas菜单做了类似的事情。
我在这里贴了一个例子……
https://jsfiddle.net/wyd1rxhg/
.menu { transition: left 0.5s ease; position: absolute; width: 400px; left: -400px; background-color: red; } .show { left: 0; }
至于它重新滑入,只需删除show class并关闭它即可!