时间:2021-05-25
网上有很多的例子介绍,在这里我所做的无缝滚动就是 通过改变元素的left值让图片呈现左右滚动的效果。
我们首先看一下 div+css 的结构样式:
div+css代码
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } ul,ol{ list-style: none; } img{ vertical-align: top; } .scroll{ width: 500px; height: 200px; margin: 100px auto; border: 1px solid #ccc; padding: 7px; overflow: hidden; position: relative; } .box{ width: 500px; height: 200px; overflow: hidden; position: relative; } .box ul{ width: 600%; position: absolute; left: 0; top: 0; } .box ul li{ float: left; } .scroll ol{ position: absolute; right: 10px; bottom: 10px; } .scroll ol li{ float: left; width: 20px; height: 20px; background: pink; text-align: center; line-height: 20px; border-radius: 50%; background-color: pink; margin-left:10px ; cursor: pointer; } .scroll ol li.current{ background-color: purple; } </style> </head> <body> <div id="scroll" class="scroll"> <div id="box" class="box"> <ul id="ul"> <li><img src="images/1.jpg" width="500" height="200"></li> <li><img src="images/2.jpg" width="500" height="200"></li> <li><img src="images/3.jpg" width="500" height="200"></li> <li><img src="images/4.jpg" width="500" height="200"></li> <li><img src="images/5.jpg" width="500" height="200"></li> </ul> <ol id="ol"> <li class="current">1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ol> </div> </div> </body></html>展示效果如图:
接下来js代码,再此之前我们要明白,小圆点 1 2 3 并不是写死的,它是根据ul li中的图片张数来决定的 ,所以我们要先把div中ol li中的代码去掉。
要实现无缝滚动就需要多一张图片才行 ,即克隆第一张图片,放到最后面。此时css布局保留,div中只剩下:
<body> <div id="scroll" class="scroll"> <div id="box" class="box"> <ul id="ul"> <li><img src="images/1.jpg" width="500" height="200"></li> <li><img src="images/2.jpg" width="500" height="200"></li> <li><img src="images/3.jpg" width="500" height="200"></li> <li><img src="images/4.jpg" width="500" height="200"></li> <li><img src="images/5.jpg" width="500" height="200"></li> </ul> </div> </div> </body>此时我们用js代码生成小圆点
var scroll = document.getElementById("scroll"); // 获得大盒子var ul = document.getElementById("ul"); // 获得ulvar ulLis = ul.children;// 获得ul的盒子 以此来生成ol中li的个数var liWidth = ul.children[0].offsetWidth;// 获得每个li的宽度 // 操作元素 // 因为要做无缝滚动,所以要克隆第一张,放到最后一张后面 // 1. 克隆元素 ul.appendChild(ul.children[0].cloneNode(true)); // 2.创建ol 和li vaar ol = document.createElement("ol");//创建ol元素 scroll.appendChild(ol);// 把ol放到scroll盒子里面去 for (var i=0;i<ulLis.length-1;i++) { var li = document.createElement("li");// 创建li元素 li.innerHTML = i + 1;// 给li里面添加文字 1 2 3 4 5 ol.appendChild(li);// 将li元素添加到ol里面 }ol.children[0].className = "current";// ol中的第一个li背景色为purple此时ol li元素即小圆点创建完毕 我们接着用js做动画
动画部分包括:
1.鼠标经过第几个小圆点,就要展示第几张图片,并且小圆点的颜色也发生变化
2.图片自动轮播,(这需要一个定时器)
3.鼠标经过图片,图片停止自动播放(这需要清除定时器)
4.鼠标离开图片,图片继续自动轮播 (重新开始定时器)
这里我们封装了一个animate()动画函数
定时器 函数
var timer = null; // 轮播图的定时器 var key = 0;// 控制播放的张数 var circle = 0;// 控制小圆点 timer = setInterval(autoplay,1000);// 自动轮播 function autoplay(){ key++; // 先++ if(key > ulLis.length-1){// 后判断 ul.style.left = 0; // 迅速调回 key = 1; // 因为第6张是第一张,所以播放的时候是从第2张开始播放 } // 动画部分 animate(ul,-key*liWidth); // 小圆点circle 当显示第几张图片是,对应的小圆点的颜色也发生变化 circle++; if (circle > olLis.length-1) { circle = 0; } // 小圆点颜色发生变化 for (var i = 0 ; i < olLis.length;i++) { // 先清除掉所用的小圆点类名 olLis[i].className = ""; } // 给当前的小圆点 添加一个类名 olLis[circle].className = "current"; }好啦,这里我们展示了主要代码,具体代码,查看这里下载js实现轮播效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
今天写一个完整的轮播图,首先它需要实现三个功能:1.鼠标放在小圆点上实现轮播2.点击焦点按钮实现轮播3.无缝自动轮播轮播图的原理:一系列的大小相等的图片平铺,利
这篇文章主要介绍了JavaScript实现轮播图效果代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下H
纯javaScript实现个性化图片轮播轮播原理说明:1.画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见。posit
本文实例为大家分享了JavaScript实现简单的轮播图的具体代码,供大家参考,具体内容如下js轮播图实现思路1、先获取元素盒子左右按钮2、鼠标经过显示/隐藏左
JavaScript实现轮播的方式多种多样,桌面的移动端的实现方式都是大同小异的,具体的核心实现原理不外乎下面几个要点。即:1.确定播放方向。一般都是横向轮播,