JS轮播图实现简单代码


Posted in Javascript onFebruary 19, 2021

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

思路:

1、首先要有个盛放图片的容器,设置为单幅图片的宽高,且overflow:hidden,这样保证每次可以只显示一个图片
2、Container内有个放图片的list进行position的定位 ,其中的图片采用float的方式,同时当图片进行轮播时,改变list的Left值使得其显示的图片发生变化。
3、图片的轮播使用定时器,通过定时器改变list的Left值是的图片循环展示
4、当鼠标滑动到图片上时,清除定时器,图片停止轮播,当鼠标移出时继续进行轮播
5、图片上有一组小圆点用于与当前显示的图片相对应,同时可以通过点击的方式查看对应的图片
6、图片可以通过点击进行左右滑动显示

代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>轮播图</title>
 <style type="text/css">
 .container{
 margin:0 auto;
 width:600px;
 height:400px;
 position: relative;
 overflow: hidden;
 border:4px solid gray;
 box-shadow: 3px 3px 5px gray;
 border-radius:10px;
 }
 .list{
 width:4200px;
 height:400px;
 position: absolute;
 top:0px;
 }
 img{
 float:left;
 width:600px;
 height:400px;
 }
 .dots{
 position: absolute;
 left:40%;
 bottom:30px;
 list-style: none;
 }
 .dots li{
 float:left;
 width:8px;
 height:8px;
 border-radius: 50%;
 background: gray;
 margin-left:5px
 }
 .dots .active{
 background: white;
 }
 .pre,.next{
 position: absolute;
 top:40%;
 font-size:40px;
 color:white;
 text-align:center;
 background: rgba(128,128,128,0.5);
 /* display:none;*/
 }
 .pre{
 left:30px;
 }
 .next{
 right:30px;
 }
 </style>
</head>
<body>
 <div class="container">
 <div class="list" style=" left:-600px;">
 <img src="img/5.jpg">
 <img src="img/1.jpg">
 <img src="img/2.jpg">
 <img src="img/3.jpg">
 <img src="img/4.jpg">
 <img src="img/5.jpg">
 <img src="img/1.jpg">
 </div>
 <ul class="dots">
 <li index=1 class="active dot"></li>
 <li index=2 class="dot"></li>
 <li index=3 class="dot"></li>
 <li index=4 class="dot"></li>
 <li index=5 class="dot"></li>
 </ul>
 <div class="pre"><</div>
 <div class="next">></div>
 </div>
<script type="text/javascript">
 var index=1,timer;
 function init(){
 eventBind();
 autoPlay();
 }
 init();
 function autoPlay(){
 timer =setInterval(function () {
 animation(-600);
 dotIndex(true);
 },1000)
 }
 function stopAutoPlay() {
 clearInterval(timer);
 }
 function dotIndex(add){
 if(add){
 index++;
 }
 else{
 index--;
 }
 if(index>5){
 index = 1;
 }
 if(index<1){
 index = 5;
 }
 dotActive();
 }
 function dotActive() {
 var dots = document.getElementsByClassName("dot");
 var len = dots.length;
 for(var i=0 ;i<len ;i++){
 dots[i].className = "dot";
 }

 for(var i=0;i<len;i++){
 /*此处可以不用parseInt,当不用全等时*/
 if(index === parseInt(dots[i].getAttribute("index"))){
 dots[i].className = "dot active";
 }
 }
 }
 function eventBind(){
 /*点的点击事件*/
 var dots = document.getElementsByClassName("dot");
 var len = dots.length;
 for(var i=0;i<len;i++){
 (function(j){
 dots[j].onclick = function(e){
 var ind = parseInt(dots[j].getAttribute("index"));
 animation((index - ind)*(-600));/*显示点击的图片*/
 index = ind;
 dotActive();
 }
 })(i)
 }
 /*容器的hover事件*/
 var con = document.getElementsByClassName("container")[0];
 /*鼠标移动到容器上时,停止制动滑动,离开时继续滚动*/
 con.onmouseover = function (e) {
 stopAutoPlay();
 }
 con.onmouseout =function(e){
 autoPlay();
 }
 /*箭头事件的绑定*/
 var pre = document.getElementsByClassName("pre")[0];
 var next = document.getElementsByClassName("next")[0];
 pre.onclick = function (e) {
 dotIndex(false);
 animation(600);
 }
 next.onclick = function (e) {
 dotIndex(true);
 animation(-600);
 }
 }
 function animation(offset){
 var lists = document.getElementsByClassName("list")[0];
 var left = parseInt(lists.style.left.slice(0,lists.style.left.indexOf("p"))) + offset;
 if(left<-3000){
 lists.style.left = "-600px";
 }
 else if(left>-600){
 lists.style.left = "-3000px";
 }
 else{
 lists.style.left = left+"px";
 }
 }

</script>
</body>
</html>

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

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

Javascript 相关文章推荐
js window.event对象详尽解析
Feb 17 Javascript
brook javascript框架介绍
Oct 10 Javascript
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
Aug 20 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
Apr 23 Javascript
利用Js+Css实现折纸动态导航效果实例源码
Jan 25 Javascript
js实现3D图片环展示效果
Mar 09 Javascript
JS判断一个数是否是水仙花数
Jun 11 Javascript
JavaScript requestAnimationFrame动画详解
Sep 14 Javascript
Vue基于NUXT的SSR详解
Oct 24 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
Oct 19 Javascript
JavaScript this关键字指向常用情况解析
Sep 02 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 #Javascript
JavaScript实现的数字与字符串转换功能示例
Aug 23 #Javascript
最基础的vue.js双向绑定操作
Aug 23 #Javascript
vue组件实现文字居中对齐的方法
Aug 23 #Javascript
React+react-dropzone+node.js实现图片上传的示例代码
Aug 23 #Javascript
深入理解React中何时使用箭头函数
Aug 23 #Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
Aug 23 #jQuery
You might like
PHP中PDO基础教程 入门级
2011/09/04 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
python魔法方法-自定义序列详解
2016/07/21 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python实现简单井字棋游戏
2020/03/04 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
行政专员岗位职责
2014/01/02 职场文书
应届大学生简历中的自我评价
2014/01/15 职场文书
新年联欢会主持词
2014/03/27 职场文书
品牌推广策划方案
2014/05/28 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang
Nginx 匹配方式
2022/05/15 Servers
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL