最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js如何实现轮播效果

来源:动视网 责编:小采 时间:2020-11-27 19:55:43
文档

js如何实现轮播效果

js如何实现轮播效果:本篇文章给大家分享的内容是js如何实现轮播效果,有着一定的参考价值,有需要的朋友可以参考一下网上有很多的例子介绍,在这里我所做的无缝滚动就是 通过改变元素的left值让图片呈现左右滚动的效果。 我们首先看一下 p+css 的结构样式: p+css代码<
推荐度:
导读js如何实现轮播效果:本篇文章给大家分享的内容是js如何实现轮播效果,有着一定的参考价值,有需要的朋友可以参考一下网上有很多的例子介绍,在这里我所做的无缝滚动就是 通过改变元素的left值让图片呈现左右滚动的效果。 我们首先看一下 p+css 的结构样式: p+css代码<
 本篇文章给大家分享的内容是js如何实现轮播效果,有着一定的参考价值,有需要的朋友可以参考一下

网上有很多的例子介绍,在这里我所做的无缝滚动就是 通过改变元素的left值让图片呈现左右滚动的效果。
我们首先看一下 p+css 的结构样式:

p+css代码

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <style type="text/css">
 *{ 
 margin: 0; 
 padding: 0; 
 }
 ul,ol{ 
 list-style: none; 
 }
 /*消除图片底部3像素距离*/
 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>
 <p id="scroll" class="scroll">
 <p 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>
 </p>
 </p>
 </body></html>

展示效果如图:

接下来我们要将js 代码 ,
再此之前 我们要明白,小圆点 1 2 3 并不是写死的,它是根据ul li中的图片张数来决定的 ,所以 我们要先把p中ol li中的代码去掉
要实现无缝滚动 就需要多一张图片才行 ,即克隆第一张图片,放到最后面。此时css布局保留,p中只剩下:

<body>
 <p id="scroll" class="scroll">
 <p 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> 
 </p>
 </p>
 </body>

此时我们用js代码生成小圆点

var scroll = document.getElementById("scroll"); // 获得大盒子
 var ul = document.getElementById("ul"); // 获得ul
 var 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()动画函数

// 动画函数 第一个参数,代表谁动 第二个参数 动多少
 // 让图片做匀速运动,匀速动画的原理是 当前的位置 + 速度 即 offsetLeft + speed

 function animate(obj,target){
 // 首先清除掉定时器
 clearInterval(obj.timer); // 用来判断 是+ 还是 - 即说明向左走还是向右走
 var speed = obj.offsetLeft < target ? 15 : -15;
 obj.timer = setInterval(function(){
 var result = target - obj.offsetLeft;//它们的差值不会超过speed
 obj.style.left = obj.offsetLeft + speed + "px"; // 有可能有小数的存在,所以在这里要做个判断 
 if (Math.abs(result) <= Math.abs(speed)) {
 clearInterval(obj.timer);
 obj.style.left = target + "px";
 }
 },10);
 }

定时器 函数

var timer = null; // 轮播图的定时器
 var key = 0;// 控制播放的张数
 var circle = 0;// 控制小圆点

 timer = setInterval(autoplay,1000);// 自动轮播
 function autoplay(){
 /*自动轮播时,要对播放的张数key进行一个判断,如果播放的张数超过ulLis.length-1,
 就要重头开始播放. 因为我们克隆了第一张并将其放在最后面,所以我们要从第二张图片开始播放*/
 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实现轮播效果

文档

js如何实现轮播效果

js如何实现轮播效果:本篇文章给大家分享的内容是js如何实现轮播效果,有着一定的参考价值,有需要的朋友可以参考一下网上有很多的例子介绍,在这里我所做的无缝滚动就是 通过改变元素的left值让图片呈现左右滚动的效果。 我们首先看一下 p+css 的结构样式: p+css代码<
推荐度:
标签: 如何 轮播 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top