您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 宿迁分类信息网,免费分类信息发布

原生js和jquery实现图片轮播特效_jquery

2025/3/29 13:26:25发布29次查看
(1)首先是页面的结构部分
对于我这种左右切换式
1.首先是个外围部分(其实也就是最外边的整体wrapper)
2.接着就是你设置图片轮播的地方(也就是一个banner吧)
3.然后是一个图片组(可以用新的div 也可以直接使用 ul-->li形式)
4.然后是图片两端的左箭头和右箭头
5.然后是一个透明背景层,放在图片底部
6.然后是一个图片描述info层,放在透明背景层的左下角(div 或 ul-->li)
7.然后是一个按钮层,用来定位图片组的index吧,放在透明背景层的右下角(div 或 ul-->li)
由此,可以先构造出html结构
puss in boots1 puss in boots2 puss in boots3 puss in boots4 puss in boots5 1 2 3 4 5

相对于之前,知识增多了两个箭头img标签
(2)css样式部分(图片组的处理)跟淡入淡出式就不一样了
淡入淡出只需要显示或者隐藏对应序号的图片就行了,直接通过display来设定
左右切换式则是采用图片li 浮动,父层元素ul 总宽为总图片宽,并设定为有限banner宽度下隐藏超出宽度的部分
然后当想切换到某序号的图片时,则采用其ul 定位 left样式设定相应属性值实现
比如显示第一张图片初始定位left为0px, 要想显示第二张图片则需要left:-400px 处理

(3)页面基本已经构建好久可以进行js的处理了
一、jquery方式
照常先说jq处理
1.全局变量等
var curindex = 0, //当前index imglen = $(.imglist li).length; //图片总数
2.自动切换定时器处理
// 定时器自动变换2.5秒每次 var autochange = setinterval(function(){ if(curindex 0) ? (--curindex) : (imglen - 1); changeto(curindex); });
右箭头
//右箭头滑入滑出事件处理 $(#next).hover(function(){ //滑入清除定时器 clearinterval(autochange); },function(){ //滑出则重置定时器 autochangeagain(); }); //右箭头点击处理 $(#next).click(function(){ curindex = (curindex < imglen - 1) ? (++curindex) : 0; changeto(curindex); });
其中autochangeagain()就是一个重置定时器函数
//清除定时器时候的重置定时器--封装 function autochangeagain(){ autochange = setinterval(function(){ if(curindex < imglen-1){ curindex ++; }else{ curindex = 0; } //调用变换处理函数 changeto(curindex); },2500); }
其中changeto()就是一个图片切换的处理函数
function changeto(num){ var goleft = num * 400; $(.imglist).animate({left: - + goleft + px},500); $(.infolist).find(li).removeclass(infoon).eq(num).addclass(infoon); $(.indexlist).find(li).removeclass(indexon).eq(num).addclass(indexon); }
每传入一个图片序号,则按理进行goleft
4.为右下角的那几个li 按钮绑定事件处理
//对右下角按钮index进行事件绑定处理等 $(.indexlist).find(li).each(function(item){ $(this).hover(function(){ clearinterval(autochange); changeto(item); curindex = item; },function(){ autochangeagain(); }); });
jq就是这样,简便,原生代码量就有些多了
完整代码
图片轮播 jq(左右切换)
puss in boots1 puss in boots2 puss in boots3 puss in boots4 puss in boots5 1 2 3 4 5

二、js 原生实现
js原生大概也就是模拟jq的实现思路
1.全局变量等
var curindex = 0, //当前index imgarr = getelementsbyclassname(imglist)[0].getelementsbytagname(li), //获取图片组 imglen = imgarr.length, infoarr = getelementsbyclassname(infolist)[0].getelementsbytagname(li), //获取图片info组 indexarr = getelementsbyclassname(indexlist)[0].getelementsbytagname(li); //获取控制index组
2.自动切换定时器处理
// 定时器自动变换2.5秒每次 var autochange = setinterval(function(){ if(curindex < imglen -1){ curindex ++; }else{ curindex = 0; } //调用变换处理函数 changeto(curindex); },2500);
同样的,有一个重置定时器的函数
//清除定时器时候的重置定时器--封装 function autochangeagain(){ autochange = setinterval(function(){ if(curindex left .
我的思路就是动态地设置element.style.left 进行定位。因为要有一个渐进的过程,所以加上的一点点阶段处理。
定位的时候left的设置也是有点复杂的..要考虑方向等情况
//图片组相对原始左移dist px距离 function goleft(elem,dist){ if(dist == 400){ //第一次时设置left为0px 或者直接使用内嵌法 style=left:0; elem.style.left = 0px; } var toleft; //判断图片移动方向是否为左 dist = dist + parseint(elem.style.left); //图片组相对当前移动距离 if(dist<0){ toleft = false; dist = math.abs(dist); }else{ toleft = true; } for(var i=0;i<= dist/20;i++){ //这里设定缓慢移动,10阶每阶40px (function(_i){ var pos = parseint(elem.style.left); //获取当前left settimeout(function(){ pos += (toleft)? -(_i * 20) : (_i * 20); //根据toleft值指定图片组位置改变 //console.log(pos); elem.style.left = pos + px; },_i * 25); //每阶间隔50毫秒 })(i); } }
上头也看到了,我初始了left的值为0px
我试过了,如果不初始或者把初始的left值写在行内css样式表里边,就总会报错取不到
所以直接在js中初始化或者在html中内嵌初始化也可。
5.接下来就是切换的函数实现了,比如要切换到序号为num的图片
//左右切换处理函数 function changeto(num){ //设置image var imglist = getelementsbyclassname(imglist)[0]; goleft(imglist,num*400); //左移一定距离 //设置image 的 info var curinfo = getelementsbyclassname(infoon)[0]; removeclass(curinfo,infoon); addclass(infoarr[num],infoon); //设置image的控制下标 index var _curindex = getelementsbyclassname(indexon)[0]; removeclass(_curindex,indexon); addclass(indexarr[num],indexon); }
6.然后再给左右箭头还有右下角那堆index绑定事件处理
//给左右箭头和右下角的图片index添加事件处理 function addevent(){ for(var i=0;i 0) ? (--curindex) : (imglen - 1); changeto(curindex); }; prev.onmouseout = function(){ //滑出则重置定时器 autochangeagain(); }; //给右箭头next添加下一个事件 var next = document.getelementbyid(next); next.onmouseover = function(){ clearinterval(autochange); }; next.onclick = function(){ curindex = (curindex < imglen - 1) ? (++curindex) : 0; changeto(curindex); }; next.onmouseout = function(){ autochangeagain(); };}
7.最后的最后,没啥了. 噢好像还要调用一下下那个 addevent() ..
完整代码 代码量有些冗杂..
图片轮播 js原生(左右切换)
puss in boots1 puss in boots2 puss in boots3 puss in boots4 puss in boots5 1 2 3 4 5

以上所述就是本文的全部内容了,希望大家能够喜欢。
宿迁分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录