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 相关文章推荐
地震发生中逃生十大法则
May 12 Javascript
JQuery 风格的HTML文本转义
Jul 01 Javascript
JavaScript 图片预览效果 推荐
Dec 22 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
Dec 30 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
Mar 02 Javascript
JavaScript 下载svg图片为png格式
Jun 21 Javascript
微信小程序实现登录遮罩效果
Nov 01 Javascript
vue.js 解决v-model让select默认选中不生效的问题
Jul 28 Javascript
详解JavaScript中的this指向问题
Feb 05 Javascript
浅析JavaScript中的变量提升
Jun 01 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程序员的技术瓶颈分析
2011/07/17 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
图片完美缩放
2006/09/07 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
原生js实现日期联动
2015/01/12 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
javascript 注释代码的几种方法总结
2017/01/04 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
vue ssr 指南详读
2018/06/29 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
keras导入weights方式
2020/06/12 Python
会计学个人自荐信模板
2013/12/13 职场文书
党员违纪检讨书
2014/02/18 职场文书
2014年营销工作总结
2014/11/22 职场文书
Python绘制分类图的方法
2021/04/20 Python
Python中的套接字编程是什么?
2021/06/21 Python