新闻发布
管理系统我陷入了另一则有趣的问题。我想动画元素与随机动画时间这是非随机的起点:
这是我写的使动画的CSS:
到现在为止,一直都还不错.但是没有随机发生,这是一个固定的2秒。
我想动画的2秒的时间是随机的。我想基本上写:
哪里美元的随机数是随机的程序
css预处理器像SASS提供一个()函数
这可能对你是完美的,它不太适合我。随机数生成的预处理过程中有一个大的警告:
随机在SASS是随机选择一个故事中的主要人物的名字。这只是随机的时候写的。它不会改变。
换句话说,一旦CSS处理,随机结束。这个数字被锁定在价值(即直到永远的预处理器运行一次)。
它不是像JavaScript中的一个随机数(例如数学。()),随机数生成的JavaScript运行时。
所以在叹息着人大声我我能意识到,这实际上是用本地的CSS变量的绝佳机会(自定义属性)!自己,他们不会做随机数容易,但正如我们将看到的,他们仍然可以帮助我们。
如果你不熟悉他们,然后不要担心。他们是本地变量,建立有效的CSS语言本身,但他们从不同的类变量,你可能熟悉一个预处理器SASS或更少。克里斯列举了许多好处而回:
你可以使用它们没有预处理的需要
他们级联。你可以设置一个变量在任何选择器设置或重写它的当前值。
当他们的变化(例如,平均值,进行查询或其他)浏览器重画的需要
你可以访问使用JavaScript
后一点是什么对我们很重要。我们要生成JavaScript中的随机数,然后将其移动到CSS的自定义属性。
一是创建CSS自定义属性需要一个默认值(如果我们在一个时刻写JavaScript没有以任何理由有用):
现在我们可以用在我们的CSS这样的变量:
非戏剧性地,我们我们开始在哪里。虽然这个演示现在看起来完全一样,我们以前的动画SVG技术,这是一个使用CSS变量代替。你可以测试,一切都只是改变CSS变量看动画更新。
现在我们都设置了访问和操作,通过JavaScript的自定义属性。
从这里我们可以在SVG发现红圈的变化动画的时间……通过CSS变量设定属性方法
这里是!一个随机生成的数字在CSS被应用到SVG动画:
这是向前迈出的一步,因为随机数生成的JavaScript运行时,因此每次不同。这非常接近我们想要的,但让这一点更难了:让我们随机,动画时间定期为它的运行
幸运的是,我们有JavaScript现在的工作,所以我们可以更新自定义属性时,我们要。这里是一个例子,我们更新动画时间每一秒:
这就是我所追求的:
记住,这是有用的CSS变量(自定义属性)的支持仍然是一个小的片状,所以要小心。虽然我们可以做的是逐步提高这个动画一样:
如果CSS变量不支持我们还是会得到一些动画的一种表现,即使它不是精确我们想要的是什么
值得注意的是,CSS变量不是随机的动画持续时间的唯一途径。我们可以通过JavaScript访问DOM元素和应用随机值直接进入风格:
我们甚至可以等待动画之前,设置一个新的时间完成,如果我们想:
只是撒一个更可能在这里,你也可以做这个与eqcss
你希望随机CSS本身可用吗?我不知道有任何谈话。即使有,我们可能将不得不等待很长一段时间来使用它。沿着这些线路,Philip Walton近写的有多么困难写一个真实的polyfill在CSS的随机数。处理JavaScript更容易!