我想做一个小动画在这个最新的网站我的工作。基本上,我需要一个或两个div/段落显示/隐藏的基础上onClick事件的单选按钮设置或复选框(然后,如果收音机/检查是值A,显示div/p,如果它的B然后隐藏它)
问题是,这就是我想在那个特定的网站上javascript-ify的所有内容,所以jQuery看起来有点矫枉过正(即使是缩小版)
是否有任何简单[我不能强调这一点足够]的方式来做到这一点,无论是通过 vanilla JavaScript或其他一些最小的库[我通常在寻找一些<2kB的事件和小动画(高度)]。
编辑
感谢所有人,我刚刚意识到,虽然我需要的一些事情可以通过智能html+js完成,显示/隐藏正确的div的规则是如此复杂,以至于包含jQuery的30 kB是值得的(如果它已经从CDN缓存),所以我会坚持使用jQuery。为大家干杯:)
编辑
JS+CSS3过渡后续,它的工作原理:)http://jsfiddle.net/ygZM7/23/
JS:
var $setter = document.getElementById('setter');
$setter.onclick = function(){
var el = document.getElementById('div1'),
h = el.clientHeight;
el.style.height = (h==200?100:200)+'px';
}
唯一的问题是:如果之前没有设置高度(动态),第一次设置时,背景会 Flink (从0 px高度开始)。
8条答案
按热度按时间kxe2p93d1#
我已经想出了我自己的快速脚本。这里什么都没有:
这将“动画”id为
Div1
的元素,您可以通过播放顶部的两个数字来控制速度:更大的 Step 表示每次显示更大的块,更小的 Interval 表示更快的动画。此代码需要在元素上应用以下样式:
当然还有现场测试案例:http://jsfiddle.net/yahavbr/BbWCp/
它应该是相当简单的动画宽度以及(甚至可能在同一时间),以实现“冷却器”的效果。:)
qyyhg6bp2#
如果您想通过更新元素的“高度”来制作动画,从而使其具有“向下滑动”(或者“向上滑动”)的效果,这应该不会太难。你只需要用计时器快速地做一些小的改变。
这只是一个样本你可以将代码连接到事件处理程序或其他东西。
qxgroojn3#
您可以使用CSS过渡。并不是所有浏览器都能使用,但IE7用户的体验与Chrome/Safari/FF 4用户的体验不完全相同,这是完全可以接受的。
5vf7fwbs4#
p3rjfoxz5#
对于它的价值,我有同样的问题,但希望有元素的高度,即使它没有在样式中设置,即使元素有显示:所以我的解决方案是窃取元素,使其不可见,将其放置在不可见的地方,使其显示:块,使用clientHeight测量其高度,使用原始设置将其放回原始位置,然后进行滑动。这就是:
我想这仍然是值得张贴在这里,因为当我搜索我的答案,我得到了这个问题,但只需要几个步骤。我希望这对某人有帮助。
v440hwme6#
我最近转换了一个网站,以消除其对jQuery的依赖,它使用
fadeIn()
和hide()
作为动画“标签页”-类似UI -如果用户单击另一个标签,则当前标签页将立即消失,而新标签将快速淡入。我想避免自己在Javascript中做任何动画,特别是CSS3的
transition
和animation
功能现在得到了很好的支持。由于这个问题最初是从2011年开始的,我假设它可以通过更新来完成,下面是我使用的:没有jQuery和手动动画(setInterval
,setTimeout
,requestAnimationFrame
等):由此:
(and一个85 KB的jQuery.min.js下载...)
变成这样
这个CSS:
您不能使用CSS
transition
s,因为每当display:
属性更改时,opacity
转换就会被阻止,但CSS动画确实支持它。这可以通过用
for(var e of...
替换for(var...
循环来缩短,但是这种循环还没有广泛的浏览器支持(截至2016年6月)。qojgxg4l7#
使用以下转换函数:
示例:
我有时会发现自己使用这个方便的函数,而不是CSS转换,因为,让我们诚实地说:CSS的过渡并不是完全经过深思熟虑的。我并不是说CSS过渡不好(我有时会使用它们),我只是说很难在任何地方使用它们。通常很难同步取消offsetWidth以强制回流,但最终会出现故障过渡,因此您可以尝试setTimeout偏移,直到它变得难以忍受的复杂,但仍然会出现故障。对于你使用过渡的目的,你可能没有这个问题,但是对于我使用它们的目的,我确实有这个问题。他们应该在规范中包含一个
Element.reflow()
函数,它将比void Element.offsetWidth
更进一步,并实际尝试同步和“整理”转换。这个单一的功能将使我的工作作为一个开发者10000000000000000000000000%更容易。mwg9r5ms8#
下面是一个淡入淡出动画脚本,你可以直接使用。在任何浏览器中都像一个魅力。