javascript--缓动运动+轮播图

QinXiao.Shou      2022-02-14     254

关键词:

上效果:

实现步骤:

最重要的是运动公式!!!

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>总有人比你富有,却比你更聪明更努力!</title>
  6     <style type="text/css">
  7         /* css 重置 */
  8         * {
  9             margin: 0;
 10             padding: 0;
 11             list-style: none;
 12         }
 13 
 14         body {
 15             background: #fff;
 16             font: normal 12px/22px 宋体;
 17         }
 18 
 19         img {
 20             border: 0;
 21         }
 22 
 23         a {
 24             text-decoration: none;
 25             color: #333;
 26         }
 27 
 28         /* 本例子css */
 29         .slideBox {
 30             width: 790px;
 31             height: 340px;
 32             overflow: hidden;
 33             position: relative;
 34             border: 1px solid #ddd;
 35             margin: 50px auto;
 36         }
 37 
 38         .bd .hd {
 39             height: 20px;
 40             /*overflow: hidden;*/
 41             position: absolute;
 42             right: 5px;
 43             bottom: 5px;
 44             z-index: 1;
 45             width: 16%;
 46         }
 47 
 48         .bd .hd ul {
 49             /*overflow: hidden;*/
 50             zoom: 1;
 51             float: left!important;
 52         }
 53 
 54         .bd .hd ul li {
 55             margin-right: 5px!important;
 56             width: 20px;
 57             height: 20px;
 58             line-height: 20px;
 59             font-weight: bold;
 60             text-align: center;
 61             background: #fff;
 62             cursor: pointer;
 63             border-radius: 50%;
 64             float: left;
 65 
 66         }
 67 
 68         .bd .hd ul li.on {
 69             background: #f00;
 70             color: #fff;
 71 
 72         }
 73 
 74         .slideBox .bd {
 75             position: relative;
 76             height: 100%;
 77             z-index: 0;
 78         }
 79 
 80         .slideBox .bd ul{
 81             float: left!important;
 82             width: 600%;
 83             position: absolute;
 84         }
 85 
 86         /* -----------------------  */
 87         .slideBox .bd li {
 88             zoom: 1;
 89             vertical-align: middle;
 90             left: 0;
 91             top: 0;
 92             float: left;
 93         }
 94 
 95         /*.slideBox .bd li.first {*/
 96             /*z-index: 1;*/
 97         /*}*/
 98 
 99         /* -----------------------  */
100         .slideBox .bd img {
101             width: 790px;
102             height: 340px;
103             display: block;
104         }
105 
106         .slideBox .prev,
107         .slideBox .next {
108             position: absolute;
109             left: 0;
110             top: 50%;
111             margin-top: -25px;
112             display: none;
113             width: 32px;
114             height: 40px;
115             background: rgba(0,0,0,0.3);
116             filter: alpha(opacity=50);
117             opacity: 0.5;
118             text-align: center;
119             font-size: 30px;
120             font-weight: bold;
121             color: #fff;
122             line-height: 40px;
123         }
124 
125         .slideBox .next {
126             left: auto;
127             right: 0;
128             background-position: 8px 5px;
129         }
130 
131         .slideBox .prev:hover,
132         .slideBox .next:hover {
133             filter: alpha(opacity=100);
134             opacity: 1;
135         }
136 
137 
138     </style>
139 </head>
140 <body>
141 <div id="slideBox" class="slideBox">
142 
143     <div class="bd" id="bd">
144         <div class="hd">
145             <ul id="control"></ul>
146         </div>
147 
148         <ul id="imgsUl"></ul>
149         <a class="prev" id="prev" href="javascript:;" ><</a>
150         <a class="next" id="next" href="javascript:;">></a>
151     </div>
152 
153 </div>
154 </body>
155 </html>
156 <script>
157     // 记录当前图片下标-- 为了图片索引值同步
158     var imgIndex = 0;
159     var t = null; // 计时器变量
160     var imgWidth =790;
161     var target = 0 ; // 缓动动画移动目标和缓动动画开始位置
162     var autoTimer;
163     // 公共获取事件源函数
164     function $(id) {
165       return document.getElementById(id);
166     }
167 
168     // 功能需求类似tab栏,也可参考线上轮播图效果
169     // 获取轮播图区
170     // 获取轮播图
171     var imgArr = [
172         "images/01.jpg",
173         "images/02.jpg",
174         "images/03.jpg",
175         "images/04.jpg",
176         "images/05.jpg"
177     ];
178 
179     //自动生成小红点li
180     // 默认设置第一个li的className是on
181     // 生成第一个默认li带并设置className = "on"
182     var liArr = [];
183     for(var i = 0 ; i < imgArr.length ; i++ ) {
184         liArr.push('<li></li>')
185     }
186     // 转换成字符串
187     $('control').innerHTML = liArr.join('');
188     // 设置属性
189     $('control').children[0].setAttribute("class","on")
190 
191 
192     // 自动生成图片li
193     var imgUl = $("imgsUl");
194 
195     var imgsLis = [];
196     for(var i = 0 ; i < imgArr.length ; i++ ) {
197         imgsLis.push('<li><a href="#"><img id="bigImg" src="'+imgArr[i]+'"/></a></li>')
198     }
199     // 转换成字符串
200     imgUl.innerHTML = imgsLis.join('');
201     // 克隆第一张图片li
202     imgUl.appendChild(imgUl.children[0].cloneNode(true));
203 
204 
205     // 前后按钮功能:1.鼠标移入轮播图区,显示前后按钮,移出消失前后按钮
206     $('bd').onmouseover = function () {
207         $('prev').style.display = "block";
208         $('next').style.display = "block";
209     }
210     $('bd').onmouseout = function () {
211         $('prev').style.display = "none";
212         $('next').style.display = "none";
213     }
214 
215 
216 
217     // 圆点鼠标移到上面图片轮播
218     var liBtns = $('control').getElementsByTagName('li');
219     for (var i = imgIndex ; i < liBtns.length ; i++) {
220         // 设置当前按钮下标
221         liBtns[i].index = i;
222         liBtns[i].onmouseover = function () {
223             imgIndex = this.index;
224             // 开启的缓动动画的计时器
225             startInterval(imgIndex);
226         }
227     }
228 
229     /*上下轮播图*/
230     // 下一张轮播图
231     $('next').onclick = function () {
232         clearInterval(t);
233         imgIndex++;
234         if(imgIndex == imgUl.children.length ) {
235             imgUl.style.left = 0;
236             imgIndex = 1;
237         }
238         startInterval(imgIndex);
239     };
240     // 上一张轮播图
241     $('prev').onclick = function () {
242         clearInterval(t);
243         imgIndex--;
244         if(imgIndex == -1 ) {
245             imgUl.style.left = -imgWidth*(imgUl.children.length-1) +"px";
246             imgIndex = imgUl.children.length - 2;
247         }
248         startInterval(imgIndex);
249     }
250 
251     // 开启缓动动画计时器
252   function startInterval(index) {
253       // 关闭缓动动画计时器
254       clearInterval(t);
255       for(var j = 0 ; j < liBtns.length ; j++) {
256           liBtns[j].className = "";
257       }
258       liBtns[index%5].className = 'on';
259       console.log(target+'ttt');
260       t = setInterval(function () {
261           // 无缝轮播图片
262           target = -index * imgWidth;
263           var speed = (target-imgUl.offsetLeft)/7;
264           speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
265           if(target == imgUl.offsetLeft) {
266               clearInterval(t);
267           }else{
268               imgUl.style.left = imgUl.offsetLeft + speed + "px";
269           }
270       },30);
271 
272   }
273 
274 
275 
276 
277 
278 
279 
280 
281 </script>

 

无限循环轮播图之运动框架(原生js)

封装运动框架1functiongetStyle(obj,name){2if(obj.currentStyle){3returnobj.currentStyle[name];4}else{5returngetComputedStyle(obj,false)[name];6}7}8functionmove(obj,json,options){9varoptions=options||{};10vard 查看详情

以运动框架写个轮播图(代码片段)

轮播图:就是图片自动切换式滚动。如下图所示。效果banner思路上一张图片按钮:oLeft-=width;下一张图片按钮:oLeft+=width;注意点:1.varjudge2=false;//用于后面按钮判断,防止切图过程中鼠标多次点击)=》这点用的比较巧妙。实现html... 查看详情

轮播图---左右切换无长滚动效果轮播图-中级难度版

...小圆点数组,prev,记录小圆点的前一个,moveBool是否进入运动函数等1、点击事件:点击左边的leftBn,设置direction="right",position--,在这要确定position不能超出数组长度范围,超出要重新赋值,点击小圆点把小圆点的当前是lis数组... 查看详情

轮播图-javascript

轮播图一:<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><metaname="Generator"content="EditPlus?"><metaname="Author"content=""><metaname="Keywords"content="" 查看详情

javascript实现的轮播图

   当初学习JavaScript的时候,想学习轮播图是怎么写的,结果在百度搜了半天也很难搜出一个完整的轮播图案例。现在就分享一个用js写的轮播图供大家参考和学习,有什么错误的地方或有更好的方法也请大家提出来,... 查看详情

javascript轮播图

代码:1<!DOCTYPEhtml>2<html>3<head>4<metacharset="utf-8"/>5<title></title>6<styletype="text/css">7*{margin:0auto;padding:0;}8#LB_div{overflow:hidden;position:rel 查看详情

javascript实现图片轮播图

<!DOCTYPEhtml><html> <head> <script> vartime; functioninit(){ //设置定时操作 time=setInterval("show()",0); //3秒执行一次 setInterval("show1()",1000); } varnum=1; fun 查看详情

javascript详解数据驱动显示之轮播图案例——三-----手撕轮播图(代码片段)

javaScript详解数据驱动显示之轮播图案例三<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE= 查看详情

轮播图

...子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写一个轮播图,最后则是关于jquery和Javascript的比较。jquery做轮播图的例子:html部分代码:<!DOCTYPEhtml><html><head><m 查看详情

javascript实现轮播图

1<!DOCTYPEhtml>2<html>3<head>4<metacharset="utf-8">5<title>carousel</title>6<styletype="text/css">7*{margin:0;padding:0;text-decoration:none;}8body{padding:20 查看详情

javascript-----轮播图插件

一、效果  1、html代码:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><linkrel="stylesheet"type="text/css"href="style.css"></head><b 查看详情

详解javascript轮播图一(代码片段)

JavaScript轮播图一源码分析<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge&# 查看详情

原生javascript实现无缝轮播图

无缝轮播图是页面常用的特效之一,然而在实际的开发过程中,大部分的开发者都会使用插件来对轮播图进行开发,那么它的底层到底是怎么实现的呢,本文章将围绕这一问题展开探讨。在讨论如何利用原生JS实现图片之间无缝... 查看详情

javascript学习——实现首页轮播图效果

1、相关技术获取元素document.getElementById(“id名称”)事件(onload)定时操作:setInterval(“changeImg()”,3000);2、步骤分析(此案例轮播图效果是基于HTML&CSS——使用DIV和CSS完成网站首页重构实现的)事先准备三张一样大小的图片(img1... 查看详情

js原生javascript轮播图渐变淡入淡出效果实现(附代码)(代码片段)

目录前言轮播图的组成以及实现思想左右按钮的隐藏与显示核心思想 代码实现 动态生成底部小圆圈核心思想代码实现     右左按钮实现核心思想代码实现实现自动播放核心思想代码实现整体代码(复制可用)总结前... 查看详情

各种各样的轮播图

...子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写一个轮播图,最后则是关于jquery和Javascript的比较。jquery做轮播图的例子:html部分代码:<!DOCTYPEhtml><html><head>&l 查看详情

javascript--轮播图_带计时器

轮播图效果:实现的功能:1.鼠标移入,左右按钮显示2.右下叫小圆点鼠标移入,进入下一张图3.左右按钮点击,右下小圆点页跟随变更4.自动开启计时器,鼠标移入右下叫小圆点区,计时器停止,鼠标移出小圆点区,计时器继续... 查看详情

10.21-javascript轮播图

轮播图的制作方法有许多种我觉得最常用的是把所有图都放进一个div里,然后只显示第一张,其余的都隐藏,然后再一张张显示出来:<divid="container"><divid="list"style="left:-600px;"><imgsrc="img/5.jpg"alt="1"/><imgsrc="img/1.jpg"al... 查看详情