javascript - 鼠标在jquery中移动时添加不同的图像
问题描述
我正在尝试制作一个 jquery 代码,当您移动鼠标时,您可以在其中显示不同的图像(1-3 个不同的图像)。
图像将在光标旁边,它们只会出现 1-3,仅此而已。而且每次鼠标移动,这些图像都会发生变化。
我目前将此作为我的 html 代码,
<div class="mainbody">
<section class="container">
<div class="img_div">
</div>
</section>
</div>
我的 jquery 代码如下所示:
let img_array = ['./img/awards_icon.png', './img/norinuri_icon.png'];
$("div.mainbody").mousemove(function(e) {
for(i=0; i<img_array.length; i++){
$('.img_div').append("<img src='" + img_array[i] +"'/>");
$('.img_div').fadeIn("5000");
$('.img_div').finish().fadeOut("5000");
$('.img_div').offset({
left: e.pageX,
top: e.pageY + 20
});
}
});
我的 jquery 数组中的 2 个图像在鼠标移动时出现,但这些图像不是只有 2 个图像,而是连续添加,没有停止。所以每次我移动鼠标时,图像都会继续无限添加。
我肯定会在 jquery 数组中添加更多图像,但是我应该如何只添加两个图像,并在移动鼠标时更改这些图像?
解决方案
利用background-image
var imageArr=["https://www.w3schools.com/css/paper.gif","https://www.w3schools.com/css/gradient_bg.png","https://www.w3schools.com/css/img_tree.png"];
var count=0;
$( ".mainbody" ).mouseover(function() {
$( ".img_div" ).css('background-image', 'url("' + imageArr[count] + '")');
if(count == imageArr.length-1)
count=0;
else
count++;
});
.mainbody{
width: 500px;
height: 500px;
border:1px solid red;
}
.img_div{
width: 200px;
height: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mainbody">
<section class="container">
<div class="img_div">
</div>
</section>
</div>
使用mousemove
(为了避免我使用鼠标移动时图像多次更改timeout
)
var imageArr=["https://www.w3schools.com/css/paper.gif","https://www.w3schools.com/css/gradient_bg.png","https://www.w3schools.com/css/img_tree.png"];
var count=0;
var timeoutid = 0;
function setImage() {
$( ".img_div" ).css('background-image', 'url("' + imageArr[count] + '")');
if(count == imageArr.length-1)
count=0;
else
count++;
}
$(".mainbody").mousemove(function() {
clearTimeout(timeoutid);
timeoutid = setTimeout(setImage, 100);
});
.mainbody{
width: 500px;
height: 500px;
border:1px solid red;
}
.img_div{
width: 200px;
height: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mainbody">
<section class="container">
<div class="img_div">
</div>
</section>
</div>
화이팅!
推荐阅读
- java - 你能改变一个不可变的类吗?
- c++ - C++ std::thread 在没有活动异常的情况下终止调用已中止
- tensorflow - 自定义反向传播
- react-native - 关于反应原生的 podfile 问题
- android - 如何确保为每个设备创建一个房间,而不是每次启动应用程序时创建一个新实例
- python - 聚合函数的分组和过滤
- mysql - 如何使用python访问位于不同位置(非本地)的另一台机器上的MySQL数据库
- angular - 使用 ngx-translate/core 进行角度翻译
- excel - 如何在多列中的公式中查找特定文本(基于列标题名称)并替换为不同的文本
- c# - 如何从一组源文件为多个框架编译 C# 代码