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 相关文章推荐
jquery.blockUI.js上传滚动等待效果实现思路及代码
Mar 18 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
浅谈javascript的Array.prototype.slice.call
Aug 31 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 Javascript
jQuery实现根据滚动条位置加载相应内容功能
Jul 18 Javascript
bootstrap使用validate实现简单校验功能
Dec 02 Javascript
protractor的安装与基本使用教程
Jul 07 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
Sep 29 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
May 18 Javascript
Bootstrap实现省市区三级联动(亲测可用)
Jul 26 Javascript
如何优化vue打包文件过大
Apr 13 Vue.js
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 PDO函数库详解
2010/04/27 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
PHP运行模式汇总
2016/11/06 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
Three.js快速入门教程
2016/09/09 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
高中生学习总结的自我评价范文
2013/10/13 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
工作犯错保证书
2015/05/11 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python