JS 实现动态轮播图

页面加载、获取整个容器、所有放数字索引的li及放图片列表的ul、定义放定时器的变量、存放当前索引的变量index
二、添加定时器,每隔2秒钟index递增一次、调用一次切换图片函数
提示:
1、 index不能一直无限制的递增下去,需做判断
2、调用切换图片函数时需将递增之后的index作为参数传过去
三、定义图片切换函数
提示:
1.遍历所有放数字索引的li,将每个li上的类去掉。
2.根据传递过来的index值找到对应的li给它添加类设为当前高亮显示。
3. 根据传递过来的index值计算放图片的ul的top值
4. 改变index的值,让其等于传递过来的参数值
注意:放图片的ul的top值=-index*单张图片的高度(所有图片必须等高)
四、鼠标划过整个容器时,图片停止切换,离开继续
提示:

  1. 鼠标滑过整个容器时清除定时器
  2. 鼠标离开时继续执行定时器,切换至下一张图片
    五、遍历所有放数字的li,且给他们添加索引、鼠标滑过时切换至对应的图片。
    鼠标滑过时调用图片切换函数,将滑过的li的索引传过去。
    具体代码如下:
var tab = {
	index:0,
	init:function(options){
		this.initData(options);
		this.render();
		this.autoMove(++ this.index);
		this.handle();
	},
	initData : function(options){
		this.el = options.el;
		this.oList = this.el.getElementsByClassName('list')[0];
		this.list = options.list;
		console.log(this.list);
	},
	render : function(){
		let html = '';
		for(let i = 0; i < this.list.length; i++){
			let item = this.list[i];
			html += `<li class="item ${i === this.index ? 'active' : ''}">
					<span class="title">${item.title}</span>
					${item.desc}
				</li>`;
		}
		this.oList.innerHTML = html;
	},
	autoMove : function(i){
		
		this.timer = setTimeout(() => {
			this.changePic(i);
			this.autoMove(this.getIndex(++ this.index));
		},1000);
	},
	changePic:function(i){
		let oItem = this.oList.getElementsByClassName('item')[i];
		
		let oActive = this.oList.getElementsByClassName('active')[0];
		let oMain = this.el.getElementsByClassName('main')[0];

		oActive.classList.remove('active');
		oItem.classList.add('active');

		oMain.style.backgroundColor = this.list[i].color;
		oMain.style.backgroundImage = `url(${this.list[i].poster})`;

	},
	getIndex : function(index){
		var minIndex = 0;
		maxIndex = this.list.length - 1;
		if(index > maxIndex){
			this.index = minIndex;
			return minIndex;
		}
		return index;
	},
	handle : function(){
		this.handleEnter();
		this.handleLeave();
	},
	handleEnter : function(){
		var oItemList = this.oList.getElementsByClassName('item');
		var self = this;
		for(let i = 0; i < this.list.length; i++){
			oItemList[i].onmouseenter = function(){
				clearTimeout(self.timer);
				self.changePic(i);
				self.index = i;
			}
		}
	},
	handleLeave:function(){
		this.oList.onmouseleave = () => {
			this.autoMove(this.getIndex(++ this.index));
		}
	}
}
tab.init({
	el : document.getElementsByClassName('app')[0],
	list : data
});

在这里插入图片描述

这是 html 中的代码 布局1 仅供参考!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值