我有一个需要在点击时重新启动的CSS3动画.这是一个显示剩余时间的酒吧.我正在使用scaleY(0)变换来创建效果.
现在我需要通过将条形图恢复到scaleY(1)来重新启动动画,然后再次转到scaleY(0).我第一次尝试设置scaleY(1)失败,因为它需要相同的15秒才能恢复到全长.即使我将持续时间更改为0.1秒,我也需要延迟或链接scaleY(0)的分配以使条形补充完成.对于这么简单的任务来说,感觉太复杂了.
我还发现了一个有趣的提示,通过从文档中删除元素重新启动动画,然后重新插入它的克隆:http: //css-tricks.com/restart-css-animation/
它有效,但有没有更好的方法来重新启动CSS动画?我正在使用Prototype和Move.js,但我并不局限于它们.
是否有可能在Ruby中创建一个方法,它接受一个块并运行块中的每个语句,直到其中一个返回false?
done = prepare_it do |x|
method_1
method_2
method_3
end
puts "Something did not work" unless done
Run Code Online (Sandbox Code Playgroud)
我希望函数prepare_it运行每个语句,但如果其中一个语句失败,则该函数退出.如果函数返回true,则表示所有步骤都成功.
这似乎要求一个异常,但我不确定如何触发和处理它.我希望我没有必要修改method_x函数以在失败时抛出异常,而是让prepare_it抛出异常,如果其中一个method_x失败(返回false)
编辑: 感谢您的建议,我想我需要在我的问题中添加更多细节.这是我第一次尝试元编程和创建DSL.:)
我有一个类向路由器发送命令.总是需要按顺序执行许多步骤(连接,登录,传递等).我认为如果用户愿意,可以让用户更改命令的顺序.例如,某些路由器不会要求用户直接进入密码提示.其他人完全跳过登录.在某些情况下,您需要提升权限或设置终端选项.
但是,如果任何命令失败,应该有一种机制使整个块失败.因此,如果由于某种原因密码失败(该方法返回false/nil),继续使用其余命令是没有意义的.而且我应该告诉它事情失败了.
&&方法有效,但我认为它不是一个很好的界面.
也许我应该强迫用户给我一个较小的块,一次一个,这些块放在一个堆栈中,然后运行命令逐个产生?
my_router.setup do {send_pass}
my_router.setup do {set_terminal}
my_router.setup do {enable_mode}
my_router.run_setup
Run Code Online (Sandbox Code Playgroud)
我认为如果我能做的话会更加清洁
my_router.setup do |cmd|
cmd.send_pass
cmd.set_terminal
end
puts "Done" if my_router.ready?
Run Code Online (Sandbox Code Playgroud)
所以在场景背后发生的任何魔术都很受欢迎!:)