本文实例为大家分享了JavaScript轮播图组件代码,供大家参考,具体内容如下
//轮播图组件
function Rolling(o) {
this.index = ++o.index || 1; //当前滚动的位置,当index大于可轮播的次数listLength或者等于0,为不可滚动状态
this.num = o.num || 1; //默认滚动一个列表
this.obj = o.obj || null; //要轮播的对象ul
this.perObj = o.perObj || null; //向上翻页的按钮对象
this.nextObj = o.nextObj || null; //向下翻页的按钮对象
this.focusPoint = o.focusPoint || null; //焦点对象,默认为null。意思不开启焦点对象,如要开启可传入焦点对象可自动开启
this.focusClass = o.focusClass || 'mien-active'; //当前焦点位置类名
this.replaceBtn = o.replaceBtn || false;//是否在轮播到第一页或最后一页时替换翻页按钮图片。默认值为true,并替换按钮图片为re+图片名。如:per.png替换成re-per.ping
console.log(o.replaceBtn)
this.listLength = Math.ceil(o.obj.find('li').length / this.num); //可轮播的次数
this.listObj = o.obj.children('li');
this.listWidth =this.listObj.width() + parseInt(this.listObj.css('margin-left')) + parseInt(this.listObj.css('margin-right')); //列表宽度
this.init(); //初始化
};
Rolling.prototype.init = function() {
var thisObj = this;
this.initLeft();
this.replaceFun();
if(this.focusPoint !== null) {
this.createFocusPoint();
}
this.perObj.unbind('click').on('click', function() {
thisObj.rollPrev();
});
this.nextObj.unbind('click').on('click', function() {
thisObj.rollNext();
});
}
//创建焦点,并给当前位置的焦点添加类mien-active
Rolling.prototype.createFocusPoint = function() {
var str = '',
thisObj = this;
for(var i = 0; i < this.listLength; i++) {
if(i == this.index - 1) {
str += '<li class="' + this.focusClass + '"></li>';
} else {
str += '<li></li>';
}
}
this.focusPoint.append(str);
this.focusPoint.children().click(function() {
var oldIndex = $('.' + thisObj.focusClass).index() + 1; //之前的焦点位置
var index = $(this).index() + 1; //当前点击的焦点
var sum = index - oldIndex;
var perObject = thisObj.perObj.find('img');
var nextObject = thisObj.nextObj.find('img');
if (index == 1 && !thisObj.replaceBtn){
perObject.attr('src',perObject.attr('data-src'));
nextObject.attr('src',nextObject.attr('data-src'));
}else if (index == thisObj.listLength && !thisObj.replaceBtn){
perObject.attr('src',perObject.attr('re-src'));
nextObject.attr('src',nextObject.attr('re-src'));
}else if (!thisObj.replaceBtn){
perObject.attr('src',perObject.attr('re-src'));
nextObject.attr('src',nextObject.attr('data-src'));
}
thisObj.index += sum;
if(sum > 0) {
thisObj.obj.animate({
marginLeft: '-=' + Math.abs(sum) * thisObj.num * thisObj.listWidth + 'px'
});
}
if(sum < 0) {
thisObj.obj.animate({
marginLeft: '+=' + Math.abs(sum) * thisObj.num * thisObj.listWidth + 'px'
});
}
$(this).addClass(thisObj.focusClass).siblings().removeClass(thisObj.focusClass);
});
}
Rolling.prototype.initLeft = function() {
if(this.index == 1) {
return;
}
this.obj.css('margin-left', -(this.index - 1) * this.listWidth); //初始化全屏图片显示的位置
}
Rolling.prototype.rollPrev = function() {
--this.index;
//当点击到第一页就return
if (this.index <= 1 && !this.replaceBtn){
this.perObj.find('img').attr('src',this.perObj.find('img').attr('data-src'));
}
if(!this.thisIndex()) {
++this.index;
return;
}
if (!this.replaceBtn){
this.nextObj.find('img').attr('src',this.nextObj.find('img').attr('data-src'));
}
this.obj.animate({
marginLeft: '+=' + this.num * this.listWidth + 'px'
});
if(this.focusPoint !== null) {
$('.' + this.focusClass).removeClass(this.focusClass).prev().addClass(this.focusClass);
}
}
Rolling.prototype.rollNext = function() {
++this.index;
if (this.index == this.listLength && !this.replaceBtn){
this.nextObj.find('img').attr('src',this.nextObj.find('img').attr('re-src'));
}
//当点击到最后一页就return
if(!this.thisIndex()) {
--this.index;
return;
}
if (!this.replaceBtn){
this.perObj.find('img').attr('src',this.perObj.find('img').attr('re-src'));
}
this.obj.animate({
marginLeft: '-=' + this.num * this.listWidth + 'px'
});
if(this.focusPoint !== null) {
$('.' + this.focusClass).removeClass(this.focusClass).next().addClass(this.focusClass);
}
}
Rolling.prototype.replaceFun = function(){
var perObject = this.perObj.find('img'),
nextObject = this.nextObj.find('img');
var perSrc = perObject.attr('src'),
nextSrc = nextObject.attr('src');
perObject.attr({'data-src':perSrc,'re-src':this.splitSrc(perSrc)});
nextObject.attr({'data-src':nextSrc,'re-src':this.splitSrc(nextSrc)});
}
Rolling.prototype.splitSrc = function(str){
var list = str.split('/');
var data = list[list.length-1];
var sub = data.substr(0,data.indexOf('.'));
return str.replace(sub,'re-' + sub);
}
Rolling.prototype.thisIndex = function() {
if(this.index > this.listLength | this.index <= 0) {
return false;
}
return true;
}
function createRolling(o) {
return new Rolling(o);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
js,轮播图,组件
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“轮播图组件js代码”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2025年10月28日
2025年10月28日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]