小编eug*_*sqr的帖子

切换标签时暂停/恢复CSS动画

我在页面上有一堆长时间运行的CSS动画.我想在用户切换到另一个选项卡时暂停它们,并在用户再次返回原始选项卡时恢复它们.为简单起见,我不打算在此时使用跨浏览器解决方案; 让它在Chrome中运行应该足够了.

document.addEventListener("visibilitychange", function() {
  if (document.hidden) {
    document.querySelector("#test").classList.add("paused");
  } else {
    document.querySelector("#test").classList.remove("paused");    
  }
});
Run Code Online (Sandbox Code Playgroud)
div#test {
  width: 50px;
  height: 50px;
  background-color: red;
  position: absolute;
  left: 10vw;
  animation-name: move;
  animation-duration: 5s;
  animation-fill-mode: forwards;
  animation-timing-function: linear;
}

@keyframes move {
  to {
    left: 90vw
  }
}

.paused {
  animation-play-state: paused !important;
  -webkit-animation-play-state: paused !important;
  -moz-animation-play-state: paused !important;
}
Run Code Online (Sandbox Code Playgroud)
<div id="test"></div>
Run Code Online (Sandbox Code Playgroud)

上面的代码水平移动一个红色矩形.矩形完成动画需要5秒钟.

问题:动画启动后,切换到另一个浏览器选项卡; 经过一段时间(超过5秒)后切换回第一个标签.

预期结果:矩形从其停止的位置继续其路径.

实际结果:矩形出现在最终目的地并停止的大部分时间.有时它按预期工作.视频演示了这个问题.

我打了不同的价值观animation-fill-modeanimation-timing-function,但结果总是相同的.正如rv7 指出的那样,在CodePen,JSFiddle,JSBin和stackoverflow JS工具中共享示例会影响结果,因此最好直接针对本地HTTP服务器上的静态页面进行测试(或使用下面的链接).

为方便起见,我已将上面的代码部署 …

javascript css animation tabs css-animations

18
推荐指数
2
解决办法
1362
查看次数

使用正则表达式获取双花括号内的值

从这个字符串:

dfasd {{test}} asdhfj {{te{st2}} asdfasd {{te}st3}}
Run Code Online (Sandbox Code Playgroud)

我想获得以下子字符串:

test, te{st2, te}st3
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望将所有内容都保留在双花括号内,包括单花括号

我不能使用这种模式:

{{(.*)}}
Run Code Online (Sandbox Code Playgroud)

因为它匹配第一个 {{ 和最后一个 }} 之间的整个内容:

test}} asdhfj {{te{st2}} asdfasd {{te}st3
Run Code Online (Sandbox Code Playgroud)

我设法用这个正则表达式模式获得了前两个:

{{([^}]*)}}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用正则表达式获得所有三个?

javascript regex

2
推荐指数
1
解决办法
1578
查看次数

标签 统计

javascript ×2

animation ×1

css ×1

css-animations ×1

regex ×1

tabs ×1