当前位置: 首页 > 知识库问答 >
问题:

我如何编写一个循环或函数,使数字随着每次鼠标点击而摇动

仲孙夕
2023-03-14

我创建了一个基本的javascript计数器。我想在每次点击计数器时对每个数字应用一个转换比例。(基本上每次单击计数器时,我都希望数字稍微增长,然后返回到基本大小)。

我不知道如何循环,这样它就会在每次递增或递减时发生。

下面是我的代码:

let addButton = document.querySelector(".btn-add");
let subButton = document.querySelector(".btn-lower");
let num = document.querySelector("h3");
let start = 0;
let colorChange = () => {
    if (start > 0) {
        num.classList.add("positive");
    } else if (start < 0) {
        num.classList.add("negative");
    } else {
        num.classList.remove("positive");
        num.classList.remove("negative");
    }
};



addButton.addEventListener("click", () => {
    start++;
    num.innerHTML = start;
    colorChange();
    
});
subButton.addEventListener("click", () => {
    start--;
    num.innerHTML = start;
    colorChange();
});

这里是我要添加的动画

.wiggle {
    animation: shake 250ms ease-in-out;
}

// h3 {

// }
@keyframes shake {
    0% {
        transform: scale(1);
    }
    70% {
        transform: scale(1.2);
    }
    100% {
        transform: scale(1);
    }
}

共有1个答案

晋天逸
2023-03-14

您需要使用AnimationEnd事件每次删除wiggle类并将其添加到colorChange()中

null

let addButton = document.querySelector(".btn-add");
let subButton = document.querySelector(".btn-lower");
let num = document.querySelector("h3");
let start = 0;

// remove wiggle class when the animation is done
num.addEventListener('animationend', function(){
  this.classList.remove('wiggle')
});



let colorChange = () => {
    if (start > 0) {
        num.classList.add("positive");
    } else if (start < 0) {
        num.classList.add("negative");
    } else {
        num.classList.remove("positive");
        num.classList.remove("negative");
    }
    num.classList.add('wiggle')
};


addButton.addEventListener("click", () => {
    start++;
    num.innerHTML = start;
    colorChange();
    
});
subButton.addEventListener("click", () => {
    start--;
    num.innerHTML = start;
    colorChange();
});
.wiggle {
    animation: shake 250ms ease-in-out;
}

// h3 {

// }
@keyframes shake {
    0% {
        transform: scale(1);
    }
    70% {
        transform: scale(1.2);
    }
    100% {
        transform: scale(1);
    }
}

.positive{color:green}
.negative{color:red}
<h3>0</h3>
<button class="btn-add">+</button>
<button class="btn-lower">-</button>
 类似资料:
  • 我有一个列表的项目,我想滚动通过,它是22长,然后它动态加载另外22个项目直到80000。 如何在这个列表中循环,每次在xpath中添加22个[22],直到达到80000的目标

  • 嗯,我已经试过多次了。不过,我一度认为最长的序列函数会有所帮助,因为它显示的是最长的冰雹序列。尽管如此,我似乎不知道如何查找或存储它用于查找的值。如果有人能解释一下,我将不胜感激。 我遇到的问题是我最长的启动顺序: 我不知道如何将其转换为递归,我注意到对于一些递归,我看到人们仍然在使用for循环,但我确信我们不应该使用循环。这可能是一个愚蠢的问题,但如果有人知道的话,有没有一个公式可以将循环转换为

  • 问题是,当我在pygame游戏中单击箭头时,pygame会将其识别为多次鼠标单击。 我所尝试的: 制作一个类,如下所示: 但这不起作用,因为当我点击箭头时什么也没发生。 我的类别: 我的事件循环:

  • 本文向大家介绍写一个让一句话随着鼠标移动的小插件相关面试题,主要包含被问及写一个让一句话随着鼠标移动的小插件时的应答技巧和注意事项,需要的朋友参考一下

  • 我正在尝试建立一个条形码扫描器应用与离子框架。scan.page.ts中的函数工作良好,但不幸的是只有一次。我扫描了一个条形码后,扫描器就再也打不开了。 我希望每次按下“扫描”选项卡按钮时,扫描仪都会打开。

  • 正如这里看到的,有两种方法可以重复某事很多次。但是它似乎对我不起作用,所以我想知道是否有人能帮忙。 基本上,我想重复以下3次 根据链接所说,这就是我所做的, 但这似乎行不通。while循环只重复一次,而不是三次。有人能帮我解决这个问题吗?