JS轮播图的实现方法2


Posted in Javascript onAugust 25, 2020

本文实例为大家分享了JS轮播图的实现代码,供大家参考,具体内容如下

需求:

自动轮播,鼠标移入轮播停止、移出继续,小圆点点击切图,左右箭头切图

效果图:

![轮播图]

JS轮播图的实现方法2

思路:

JS轮播图的实现方法2

将所有需要轮播的图片横向排列,可视区大小设置为只能显示一张图片,给容器设置移出隐藏后,可视区之外的部分被隐藏,这样我们就只能看见一张图片。
轮播实现是改变整个图片画幅的left值或者margin-left 值,当点击时移动整个画幅单个图片的宽度即可实现滚动到下一张。
后面功能实现顺序依旧是写法一里的思路。

HTML部分:

<div id="banner">
 <div class="w">
<!-- 左右箭头-->
 <span class="iconfont icon-zuojiantou"></span>
 <span class="iconfont icon-youjiantou"></span>
<!-- 轮播图-->
 <ul >
 <li><img src="img/1.jpg" alt=""></li>
 <li><img src="img/2.jpg" alt=""></li>
 <li><img src="img/3.jpg" alt=""></li>
 </ul>
<!-- /小圆点-->
 <ol id="circleContainer">

 </ol>
 </div>
</div>

CSS部分:

<style>
 *{
 margin: 0;
 padding: 0;
 list-style: none;
 }
 .w {
 width: 1000px;
 height: 600px;
 margin: 100px auto 0;
 position: relative;
 overflow: hidden;
 }
 ul {
 width: 1000%;
 transition: all .5s ease-in-out;
 }
 ul li {
 float: left;
 width: 1000px;
 }
 ul li img {
 width: 100%;
 height: 600px;
 }
 .iconfont {
 color: white;
 position: absolute;
 font-size: 30px;
 top: calc(50% - 15px);
 background-color: rgba(216, 216, 216, 0.23);
 border-top-right-radius: 50%;
 border-bottom-right-radius: 50%;
 cursor: pointer;
 }
 .iconfont:hover {
 color: palegreen;
 }
 .icon-zuojiantou {
 left: 0;
 }
 .icon-youjiantou {
 right: 0;
 }
 #circleContainer {
 position: absolute;
 bottom: 10px;
 left: calc(50% - 30px);
 }
 #circleContainer li {
 display: inline-block;
 width: 20px;
 height: 20px;
 border-radius: 50%;
 background-color: white;
 margin-right: 5px;
 }
 #circleContainer .change {
 background-color: palegreen;
 }
</style>

JS部分:

<script>
 let timer = setInterval(function () {
 arrow_r.onclick();
 },2000);
 let w = document.querySelector(".w");
 w.addEventListener("mouseenter",function () {
 clearInterval(timer);
 });
 w.addEventListener("mouseleave",function () {
 clearInterval(timer);
 timer = setInterval(function () {
 arrow_r.onclick();
 },2000);
 });
 //获取元素
 let ul = document.querySelector("ul");
 let ol = document.querySelector("#circleContainer");
 let arrow_r = document.querySelector(".icon-youjiantou");
 let arrow_l = document.querySelector(".icon-zuojiantou");
 let ImgWidth = ul.children[0].offsetWidth;
 let location_i = 0 ;
 // 创建小圆点 动态生成小圆点,图片增加时小圆点也随之增加
 for (let i = 0; i<ul.children.length;i++){
 let li = document.createElement("li");
 li.setAttribute("index",i);
 li.addEventListener("click",function () {
 let index = this.getAttribute("index");
 move(ul,index);
 location_i = index ;
 });
 ol.appendChild(li);
 }

 let liclone = ul.children[0].cloneNode(true);
 ul.appendChild(liclone);
 // 轮播函数
 function move(targetObj,n) {
 if (n === targetObj.children.length ) {
 targetObj.style.marginLeft = "0px";
 n = 0;
 }
 targetObj.style.marginLeft = -n * ImgWidth +"px";
 for (let i =0 ;i<ol.children.length;i++){
 ol.children[i].className = "";
 }
 n === 3 ? ol.children[0].className = "change": ol.children[n].className = "change";

 }
 ol.children[0].className = "change";
 // 右箭头点击
 arrow_r.onclick = function () {
 if (location_i === 3) {
 location_i = 0 ;
 ul.style.marginLeft = "0px" ;
 }
 location_i++;
 move(ul,location_i);

 };
 // 左箭头点击
 arrow_l.addEventListener("click",function () {
 if (location_i == 0) {
 location_i = ul.children.length -1 ;
 }
 location_i--;
 move(ul,location_i);
 })
</script>

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 深拷贝函数
Dec 04 Javascript
JavaScript与DOM组合动态创建表格实例
Dec 23 Javascript
jquery 实现input输入什么div图层显示什么
Jun 15 Javascript
JavaScript中的操作符类型转换示例总结
May 30 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
Sep 27 Javascript
清除js缓存的多种方法总结
Dec 09 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
使用原生的javascript来实现轮播图
Feb 24 Javascript
vue中如何使用ztree
Feb 06 Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 Javascript
微信小程序文章详情功能完整实例
Jun 03 Javascript
js实现有趣的倒计时效果
Jan 19 Javascript
JS轮播图的实现方法
Aug 24 #Javascript
js 函数性能比较方法
Aug 24 #Javascript
JavaScript实现简单验证码
Aug 24 #Javascript
JavaScript经典案例之简易计算器
Aug 24 #Javascript
原生js实现拖拽移动与缩放效果
Aug 24 #Javascript
JavaScript实现拖拽和缩放效果
Aug 24 #Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 #jQuery
You might like
用PHP来写记数器(详细介绍)
2006/10/09 PHP
php后门URL的防范
2013/11/12 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
图片按比例缩放函数
2006/06/26 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
利用JQuery阻止事件冒泡
2016/12/01 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
js实现秒表计时器
2019/12/16 Javascript
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
Python fileinput模块使用实例
2015/06/03 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
python 魔法函数实例及解析
2019/09/25 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
python使用建议与技巧分享(一)
2020/08/17 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
政治表现评语
2014/05/04 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python