js鼠标移入移出显示不同图片_一个用js撸的轮播图.

78c67c81532cf3ccad67cb2b5cb3d25d.png

前几天在知乎看到,前端面试要求手撸一个轮播图正常吗,我感觉不难,用了脑子里的一点js知识开干了.

我是在校学生,仅仅上了十几个学时的js吧,课外没有偷偷补课~

其实我是讨厌js这种弱类型语言的,感觉一点都不可靠,所以没有过多的学习.

代码js部分有一百五十行了,用jq的话要少非常非常多,但是我的目的就是看看"手撸一个轮播图过分吗",结论是,很正常,没有逻辑困难,只有编程困难,至少当场说出实现逻辑是没有任何困难的.

先看看效果,录屏有点麻烦,手机录像一样的可以看出效果,就直接手机录像了:

4c2ca2cf347ec49f6e092d451e06e153.png
演示视频https://www.zhihu.com/video/1124653783925456896

代码如下:

<!DOCTYPE html>

我是在校学生,没有项目经历,写的不好的地方还请指出我会加以修正~

对了,要运行起来看看的话,需要在代码上一级文件夹里建一个images文件夹里放上图片,看看HTML代码部分就知道啦。实在还是不会的可以评论下,我发个压缩包出来看看。

谢谢!

可以通过监听鼠标移入移出事件,来控制轮播图的播放和停止。具体实现方法如下: 1. 获取轮播图元素和图片数量 ```javascript var slider = document.querySelector('.slider'); var imgs = slider.querySelectorAll('img'); var imgNum = imgs.length; ``` 2. 定义轮播函数和定时器 ```javascript var index = 0; // 当前图片下标 var timer = null; // 定时器 function changeImg() { for (var i = 0; i < imgNum; i++) { imgs[i].style.display = 'none'; // 隐藏所有图片 } imgs[index].style.display = 'block'; // 显示当前图片 index++; // 切换到下一张图片 if (index >= imgNum) { index = 0; // 切换到第一张图片 } } timer = setInterval(changeImg, 2000); // 每隔2秒切换一次图片 ``` 3. 监听鼠标移入移出事件 ```javascript slider.addEventListener('mouseover', function() { clearInterval(timer); // 鼠标移入时停止轮播 }); slider.addEventListener('mouseout', function() { timer = setInterval(changeImg, 2000); // 鼠标移出时继续轮播 }); ``` 完整代码如下: ```html <div class="slider"> <img src="img1.jpg" alt=""> <img src="img2.jpg" alt=""> <img src="img3.jpg" alt=""> </div> ``` ```javascript var slider = document.querySelector('.slider'); var imgs = slider.querySelectorAll('img'); var imgNum = imgs.length; var index = 0; var timer = null; function changeImg() { for (var i = 0; i < imgNum; i++) { imgs[i].style.display = 'none'; } imgs[index].style.display = 'block'; index++; if (index >= imgNum) { index = 0; } } timer = setInterval(changeImg, 2000); slider.addEventListener('mouseover', function() { clearInterval(timer); }); slider.addEventListener('mouseout', function() { timer = setInterval(changeImg, 2000); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值