gpt4 book ai didi

javascript - 如何在使用 Javascript 在控制台中调用 start() 和 stop() 时启动和停止多步动画?

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:34 28 4
gpt4 key购买 nike

我已经为多步动画编写了以下代码。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
$max: 100px;

.equilizer {
height: $max;
width: $max;
transform: rotate(180deg);
}

.bar {
fill: DeepPink;
width: 18px;
animation: equalize 1.25s steps(25, end) 0s infinite;
}

.bar:nth-child(1) {
animation-duration: 1.9s;
}

.bar:nth-child(2) {
animation-duration: 2s;
}

.bar:nth-child(3) {
animation-duration: 2.3s;
}

.bar:nth-child(4) {
animation-duration: 2.4s;
}

.bar:nth-child(5) {
animation-duration: 2.1s;
}

@keyframes equalize {
0% {
height: 60px;
}
4% {
height: 50px;
}
8% {
height: 40px;
}
12% {
height: 30px;
}
16% {
height: 20px;
}
20% {
height: 30px;
}
24% {
height: 40px;
}
28% {
height: 10px;
}
32% {
height: 40px;
}
36% {
height: 60px;
}
40% {
height: 20px;
}
44% {
height: 40px;
}
48% {
height: 70px;
}
52% {
height: 30px;
}
56% {
height: 10px;
}
60% {
height: 30px;
}
64% {
height: 50px;
}
68% {
height: 60px;
}
72% {
height: 70px;
}
76% {
height: 80px;
}
80% {
height: 70px;
}
84% {
height: 60px;
}
88% {
height: 50px;
}
92% {
height: 60px;
}
96% {
height: 70px;
}
100% {
height: 80px;
}
}
</style>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" class="equilizer" viewBox="0 0 128 128">
<g>
<title>Audio Equilizer</title>
<rect class="bar" transform="translate(0,0)" y="15"></rect>
<rect class="bar" transform="translate(25,0)" y="15"></rect>
<rect class="bar" transform="translate(50,0)" y="15"></rect>
<rect class="bar" transform="translate(75,0)" y="15"></rect>
<rect class="bar" transform="translate(100,0)" y="15"></rect>
</g>
</svg>
</body>
</html>

现在默认动画应该处于停止模式。在 Web 浏览器的控制台中运行 start() 时,它应该启动动画,而控制台中的 stop() 应该再次停止动画。我将如何使用简单的 JavaScript 进行此操作(建议我不要使用任何外部框架/库,除了简单的 HTML、CSS 和 JAVASCRIPT)。

最佳答案

可以设置rect元素 .style.animationPlayState"paused""running"

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<style>
.equilizer {
height: 100px;
width: 100px;
transform: rotate(180deg);
}
.bar {
fill: DeepPink;
width: 18px;
animation: equalize 1.25s steps(25, end) 0s infinite;
animation-play-state: paused;
}
.bar:nth-child(1) {
animation-duration: 1.9s;
}
.bar:nth-child(2) {
animation-duration: 2s;
}
.bar:nth-child(3) {
animation-duration: 2.3s;
}
.bar:nth-child(4) {
animation-duration: 2.4s;
}
.bar:nth-child(5) {
animation-duration: 2.1s;
}
@keyframes equalize {
0% {
height: 60px;
}
4% {
height: 50px;
}
8% {
height: 40px;
}
12% {
height: 30px;
}
16% {
height: 20px;
}
20% {
height: 30px;
}
24% {
height: 40px;
}
28% {
height: 10px;
}
32% {
height: 40px;
}
36% {
height: 60px;
}
40% {
height: 20px;
}
44% {
height: 40px;
}
48% {
height: 70px;
}
52% {
height: 30px;
}
56% {
height: 10px;
}
60% {
height: 30px;
}
64% {
height: 50px;
}
68% {
height: 60px;
}
72% {
height: 70px;
}
76% {
height: 80px;
}
80% {
height: 70px;
}
84% {
height: 60px;
}
88% {
height: 50px;
}
92% {
height: 60px;
}
96% {
height: 70px;
}
100% {
height: 80px;
}
}
</style>
</head>

<body>
<button>play/pause</button>
<svg xmlns="http://www.w3.org/2000/svg" class="equilizer" viewBox="0 0 128 128">
<g>
<title>Audio Equilizer</title>
<rect class="bar" transform="translate(0,0)" y="15"></rect>
<rect class="bar" transform="translate(25,0)" y="15"></rect>
<rect class="bar" transform="translate(50,0)" y="15"></rect>
<rect class="bar" transform="translate(75,0)" y="15"></rect>
<rect class="bar" transform="translate(100,0)" y="15"></rect>
</g>
</svg>
<script>
var button = document.querySelector("button");
var bar = document.querySelectorAll(".bar");
for (let rect of bar) {
rect.style.animationPlayState = "paused";
}
button.addEventListener("click", function(e) {
var state = bar[0].style.animationPlayState;
for (let rect of bar) {
rect.style.animationPlayState = state === "paused" ? "running" : "paused"
}
});
</script>
</body>

</html>

要播放,请使用 <button> 暂停动画元素

  <script>
var button = document.querySelector("button");
var bar = document.querySelectorAll(".bar");
for (let rect of bar) {
rect.style.animationPlayState = "paused";
}
button.addEventListener("click", function(e) {
var state = bar[0].style.animationPlayState;
for (let rect of bar) {
rect.style.animationPlayState = state === "paused" ? "running" : "paused"
}
});
</script>

要播放,请在 console 暂停动画你可以使用

var bar = document.querySelectorAll(".bar");


function start() {
for (let rect of bar) {
rect.style.animationPlayState = "running"
}
}

function stop() {
for (let rect of bar) {
rect.style.animationPlayState = "paused"
}
}

// run animations
start();

// pause animations
stop();

关于javascript - 如何在使用 Javascript 在控制台中调用 start() 和 stop() 时启动和停止多步动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39680021/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com