javascript - vanilla javascript 中的按钮闪烁效果

标签 javascript css dom

我正在复制 simon 游戏原型(prototype),并尝试在 vanilla js 中编写一个用于按钮闪烁的函数。

目前我有以下功能:

function blinkColor(color) {
  let colorButton = document.getElementById(color);
  colorButton.style.background = *highlightColor*;  
  setTimeout(() => {colorButton.style.background = *originalColor*}, 1000);
}

我正在用另一种更亮的颜色替换按钮颜色,然后在超时后再次将其更改回来。当连续颜色彼此不同时,它会起作用,但当它需要多次闪烁相同颜色时(例如“红色”,“红色”,“红色”),它不会在闪烁之间留下中断,并且它会闪烁。看起来它只是长长地眨了一下眼睛。

是否有更好的方法来编写此功能?

最佳答案

当突出显示的颜色与当前颜色相同时,您可以比较颜色并使用默认颜色:

function blinkColor(color) {
  let colorButton = document.getElementById(color);
  colorButton.style.background = *highlightColor*;
  if(highlightColor == colorButton.style.background){
    setTimeout(() => {colorButton.style.background = *white(i.e.)*}, 1000);
  } else {
    setTimeout(() => {colorButton.style.background = *originalColor*}, 1000);
  }
}

您必须执行比较来检查颜色类型(rgb、rgba、hex...),如果您有可能为此使用 css-animation,那就这样做:-)

关于javascript - vanilla javascript 中的按钮闪烁效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299960/

相关文章:

css - 使 Div 层高度扩展到周围 Div 的 100%?

javascript - Ext js网格透视

html - 安装 React Bootstrap 后如何去除边距

javascript - 如何以编程方式仅选择用户可选择的所有文本节点

jquery - 使用 jQuery 确定复选框是否被选中

javascript - 使用 Google Apps 脚本循环遍历整个列

javascript - 是否可以使用 Webpack 从 jQuery 仅导入 Ajax 方法?

javascript - 获取所选选项的内部 html

javascript - 向左/向右滚动带有动画的图像

javascript - Vue 组件丢失第一次按键