html 横向轮播图片,JS实现横向轮播图(初级版)

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

描述:

轮播图,初级,横向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉),核心知识是数据驱动图像的位移达到效果。

效果:

48de87488c36488c4fc5cb596399f9cb.png

代码:

js文件:

/*

* 工厂模式

* */

var Method=(function () {

return {

loadImage:function (arr,callback) {

var img=new Image();

img.arr=arr;

img.list=[];

img.num=0;

img.callback=callback;

// 如果DOM对象下的事件侦听没有被删除掉,将会常驻堆中

// 一旦触发了这个事件需要的条件,就会继续执行事件函数

img.addEventListener("load",this.loadHandler);

img.self=this;

img.src=arr[img.num];

},

loadHandler:function (e) {

this.list.push(this.cloneNode(false));

this.num++;

if(this.num>this.arr.length-1){

this.removeEventListener("load",this.self.loadHandler);

this.callback(this.list);

return;

}

this.src=this.arr[this.num];

},

$c:function (type,parent,style) {

var elem=document.createElement(type);

if(parent) parent.appendChild(elem);

for(var key in style){

elem.style[key]=style[key];

}

return elem;

}

}

})();

html文件:

Title

*{

margin: 0;

padding: 0;

}

#carousel,#imgCon img{

width: 1200px;

height: 400px;

}

#carousel

{

position: relative;

margin: auto;

overflow: hidden;

}

#imgCon{

width: 6000px;

height: 400px;

position: absolute;

left: 0;

font-size: 0;

transition: all 1s;

}

#leftBn,#rightBn

{

position: absolute;

top:170px;

}

#leftBn{

left: 20px;

}

#rightBn

{

right: 20px;

}

ul{

position: absolute;

bottom: 20px;

list-style: none;

margin: auto;

left: 45%;

}

li

{

width: 20px;

height: 20px;

border: 1px solid red;

border-radius: 10px;

float: left;

text-align: center;

color: white;

cursor: default;

line-height:20px;

font-size: 12px;

margin-left: 8px;

}

a.jpeg

b.jpeg

c.jpeg

d.jpeg

e.jpeg

  • 1
  • 2
  • 3
  • 4
  • 5

left.png

right.png

/*

*

* 数据驱动显示

*

* */

var imgCon,leftBn,rightBn,lis,ul,prevLi;

var position=0;//图像的标记 第一张0 第二张1...

init();

function init() {

imgCon=document.getElementById("imgCon");//图

leftBn=document.getElementById("leftBn");//左按钮

rightBn=document.getElementById("rightBn");//右按钮

lis=document.getElementsByTagName("li");//下方数字右按钮

ul=document.getElementsByTagName("ul")[0];

leftBn.addEventListener("click",clickHandler);

rightBn.addEventListener("click",clickHandler);

for(var i=0;i

lis[i].num=i;

lis[i].addEventListener("click",liClickHandler);

}

changeLi();

}

// setInterval(autoImg,3000);可以实现自动

function autoImg() {//自动轮播

position++;

if(position>4) position=0;

changeImg();

}

function clickHandler(e) {

e= e || window.event;

if(this===leftBn){

position--;

if(position<0) position=4;

}else if(this===rightBn){

position++;

if(position>4) position=0;

}

changeImg();

}

function liClickHandler(e) {

e= e || window.event;

position=this.num;

changeImg();

}

function changeImg() {//图片的转换效果 唯一

imgCon.style.left=-position*1200+"px";//一次一张图片的位移

changeLi();

}

function changeLi() {//底部数字的转换效果

if(prevLi){

prevLi.style.backgroundColor="rgba(255,0,0,0)";

}

prevLi=lis[position];

prevLi.style.backgroundColor="rgba(255,0,0,0.5)";

}

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部