Javascript 触发 CSS 动画

标签 javascript css animation

我不知道怎么写,但请看我的代码: JSFiddle

.pie:nth-of-type(1):hover:AFTER,
.pie:nth-of-type(1):hover:BEFORE  {
    background-color:yellow;    
    opacity: 0.5;
}

它基本上是一个命运之轮游戏,但使用高光而不是旋转。

问题是我如何编写一个 javascript 来触发在给定时间内突出显示切片的事件?我也希望每个切片之间的过渡速度随着时间的推移而减慢。

最佳答案

其实很简单。

首先,您不需要所有馅饼的所有 n-th-of-type。但是您需要一个额外的类,例如“active”,否则您无法通过 JavaScript 突出显示它。

所以,你的 .pie CSS 变成了:

.pie.active:BEFORE,
.pie:hover:AFTER,
.pie:hover:BEFORE {
   background-color: yellow;
   opacity: 0.5;
}

然后,这里是执行您需要的示例代码(在 onload 中):

function highlight(el, delay) {
  setTimeout(function() {
     el.className += ' active'; //light it up
     //un-highlight after delay:
     setTimeout(function() {  el.className = 'pie'; }, 200)
  }, delay)
}


var divs = document.querySelectorAll('.pie');
for (var i = 0; i < divs.length; i++) {
  highlight(divs[i], i*200);
}

这是 fiddle : JSFiddle

可以通过添加过渡使其更加平滑,例如在上面的 CSS 中添加 transition: background-color 0.1s; 并使所有编程延迟为 200ms。

要实现减速,您需要使用延迟公式。 i*200 相当简单,但我不想失去尝试各种数学函数来改变时序的乐趣。此外,您可以更改 transition css,以编程方式在元素本身上更改它优先于 CSS。经过一些努力,您可以轻松地使其相当逼真。

关于Javascript 触发 CSS 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38005086/

相关文章:

javascript - 逐字显示句子。仅显示一句话

javascript - 将鼠标悬停在列表项上时更改背景图像

javascript - 使用 jquery 清除元素的属性

javascript - 如何读取插入到 ng-model 中的数据?

html - 鼠标悬停弹出动画

javascript - Safari 上的 CSS 转换与其他浏览器相比起伏不定

php - 数到 4 后换行

html - 如何将文本设置为在动画结束时居中对齐?

javascript - 使用 Jquery 正确地为多个元素设置动画

css - 如何在动画中使用剪辑路径?