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 相关文章推荐
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
Sep 04 Javascript
始终在屏幕中间显示Div的代码(css+js)
Mar 10 Javascript
JS删除数组元素的函数介绍
Mar 27 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
Mar 14 Javascript
JavaScript保存并运算页面中数字类型变量的写法
Jul 06 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 Javascript
理解JS绑定事件
Jan 19 Javascript
bootstrap PrintThis打印插件使用详解
Feb 20 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
js实现视图和数据双向绑定的方法分析
Feb 05 Javascript
详解javascript void(0)
Jul 13 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
无线电广播的开始
2002/01/30 无线电
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
javascript 表单的友好用户体现
2009/01/07 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
django删除表重建的实现方法
2019/08/28 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
如何查找和删除数据库中的重复数据
2014/11/05 面试题
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
新年抽奖获奖感言
2014/03/02 职场文书
2014年个人售房协议书
2014/10/30 职场文书
python tkinter模块的简单使用
2021/04/07 Python
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL