话不多说,请看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>无缝轮播图-原生js封装</title>
<link rel="shortcut icon" href="../public/image/favicon.ico" type="images/x-icon"/>
<link rel="icon" href="../public/image/favicon.png" type="images/png"/>
<link rel="stylesheet" type="text/css" href="../public/style/cssreset-min.css">
<link rel="stylesheet" type="text/css" href="../public/style/common.css">
<style type="text/css">
/*公共*/
html{
height:100%;
}
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td {
margin: 0;
padding: 0
}
body{
position: relative;
min-height:100%;
font-size:14px;
font-family: Tahoma, Verdana,"Microsoft Yahei";
color:#333;
}
a{
text-decoration: none;
color:#333;
}
.header{
width: 960px;
padding-top: 15px;
margin: 0 auto;
line-height: 30px;
text-align: right;
}
.header a{
margin: 0 5px;
}
.main{
width:960px;
margin: 50px auto 0;
}
.code{
border:1px dashed #e2e2e2;
padding:10px 5px;
margin-bottom:25px;
}
pre {
font-family: "Microsoft Yahei",Arial,Helvetica;
white-space: pre-wrap; /*css-3*/
white-space: -moz-pre-wrap; /*Mozilla,since1999*/
white-space: -pre-wrap; /*Opera4-6*/
white-space: -o-pre-wrap; /*Opera7*/
word-wrap: break-word; /*InternetExplorer5.5+*/
}
.example{
padding-top:40px;
margin-bottom:90px;
}
.example .call{
padding:18px 5px;
background:#f0f5f8;
}
.example h2{
padding-top:20px;
margin-bottom:7px;
}
.example table {
width:100%;
table-layout:fixed;
border-collapse: collapse;
border-spacing: 0;
border: 1px solid #cee1ee;
border-left: 0;
}
.example thead {
border-bottom: 1px solid #cee1ee;
background-color: #e3eef8;
}
.example tr {
line-height: 24px;
font-size: 13px;
}
.example tr:nth-child(2n) {
background-color: #f0f5f8;
}
.example tr th,.example tr td {
border-left: 1px solid #cee1ee;
word-break: break-all;
word-wrap: break-word;
padding:0 10px;
font-weight: normal;
}
.example tr th {
color: #555;
padding-top: 2px;
padding-bottom: 2px;
text-align: left;
}
/*公共*/
.bannerha-container{
width: 800px;
height: 300px;
margin: 20px auto;
overflow: hidden;
position: relative;
}
.bannerha-wrapper{
width: 100%;
height: 100%;
position: absolute;
display: -webkit-box;
display: box;
}
.bannerha-slide{
background: #ccc;
list-style: none;
width: 100%;
height: 100%;
text-align: center;
font-size: 18px;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
}
.bannerha-pagination{
position: absolute;
text-align: center;
z-index: 10;
bottom: 10px;
left: 0;
width: 100%;
}
.bannerha-pagination-bullet{
width: 8px;
height: 8px;
display: inline-block;
border-radius: 100%;
background: #fff;
opacity: .5;
margin: 0 4px;
}
.bannerha-pagination-bullet-active{
opacity: 1;
background: #ff0;
}
.bannerha-button{
width: 100px;
height: 100%;
position: absolute;
top: 0;
background-color: #333;
z-index: 1;
cursor: pointer;
filter: alpha(opacity:20);
opacity: 0.2;
-webkit-transition: all .2s ease-in;
-moz-transition: all .2s ease-in;
-ms-transition: all .2s ease-in;
-o-transition: all .2s ease-in;
transition: all .2s ease-in;
}
.bannerha-button.active{
filter: alpha(opacity:60);
opacity: 0.6;
}
.bannerha-button-prev{
left:0;
}
.bannerha-button-next{
right:0;
}
</style>
<script type="text/javascript">
/*封装代码*/
(function() {
var Bannerha = function(e, opts) {
var self = this;
var defaults = {
circle: true,
speeds: 20,
pnBtn: true,
autoPlay: true,
times: 3000
}
opts = opts || {};
for (var w in defaults) {
if ("undefined" == typeof opts[w]) {
opts[w] = defaults[w];
}
}
this.params = opts;
this.container = r(e);
if (this.container.length > 1) {
var x = [];
return this.container.each(function() {
x.push(new Bannerha(this, opts))
}), x
}
this.containers = this.container[0];
this.oUl = this.container.find(".bannerha-wrapper")[0];
this.liW = this.oUl.children[0].offsetWidth;
this.len = this.oUl.children.length;
this.flag = true;
this.num = 1;
this.timer = null;
this.timers = null;
this.init();
}
Bannerha.prototype = {
init: function() {
var self = this;
this.clone();
if (this.params.pnBtn) {
this.pnBtn();
}
if (this.params.circle) {
this.circle();
}
if (this.params.autoPlay) {
this.plays();
this.boxmove()
}
},
boxmove: function() {
var self = this;
this.container[0].addEventListener('mouseout', function(e) {
self.plays();
}, false);
this.container[0].addEventListener('mouseover', function(e) {
self.stops();
}, false);
},
plays: function() {
var self = this;
this.timers = setInterval(function() {
self.go(-self.liW);
}, self.params.times);
},
stops: function() {
clearInterval(this.timers)
},
clone: function() {
var fir = this.oUl.children[0].cloneNode(true),
last = this.oUl.children[this.len - 1].cloneNode(true);
this.oUl.appendChild(fir);
this.oUl.insertBefore(last, this.oUl.children[0]);
this.len = this.oUl.children.length;
this.oUl.style.left = -this.liW + 'px';
},
pnBtn: function() {
var self = this;
this.container.append('<div class="bannerha-button bannerha-button-prev"></div><div class="bannerha-button bannerha-button-next"></div>');
this.container[0].addEventListener('click', function(e) {
self.events(e)
}, false);
this.container[0].addEventListener('mouseover', function(e) {
self.eventsover(e)
}, false);
},
circle: function() {
var self = this;
var pagination = document.createElement("div");
pagination.className = "bannerha-pagination";
for (var i = 0; i < self.len - 2; i++) {
var btnspan = document.createElement("span");
btnspan.className = "bannerha-pagination-bullet";
pagination.appendChild(btnspan);
}
this.containers.appendChild(pagination);
this.bullet = this.container.find(".bannerha-pagination-bullet");
this.bullet[0].classList.add("bannerha-pagination-bullet-active");
for (var i = 0; i < this.bullet.length; i++) {
! function(i) {
self.bullet[i].addEventListener('click', function(e) {
if (!self.flag) {
return;
}
if (this.className.indexOf('bannerha-pagination-bullet-active') > -1) {
return;
}
var myIndex = i - (self.num - 1);
var offset = -self.liW * myIndex;
self.go(offset);
self.num = i + 1;
self.showButton();
}, false);
}(i);
}
},
events: function(e) {
var self = this;
var oSrc = e.srcElement || e.target;
if (oSrc.tagName.toLowerCase() == 'div' && oSrc.className.indexOf('bannerha-button-prev') > -1) {
if (!this.flag) {
return;
}
self.go(this.liW);
if (self.params.circle) {
self.showButton();
}
}
if (oSrc.tagName.toLowerCase() == 'div' && oSrc.className.indexOf('bannerha-button-next') > -1) {
if (!this.flag) {
return;
}
self.go(-this.liW);
if (self.params.circle) {
self.showButton();
}
}
},
eventsover: function(e) {
var self = this;
var oSrc = e.srcElement || e.target;
if (oSrc.className.indexOf('bannerha-button') > -1) {
oSrc.classList.add("active")
oSrc.addEventListener('mouseout', function(e) {
oSrc.classList.remove("active");
}, false);
}
},
showButton: function() {
var self = this;
var num = this.num - 1;
for (var i = 0; i < this.bullet.length; i++) {
this.bullet[i].classList.remove("bannerha-pagination-bullet-active");
}
this.bullet[num].classList.add("bannerha-pagination-bullet-active");
},
go: function(offset) {
var self = this;
if (self.flag) {
self.flag = false;
if (offset < 0) {
self.num++;
if (self.num > self.len - 2) {
self.num = 1;
}
}
if (offset > 0) {
self.num--;
if (self.num <= 0) {
self.num = self.len - 2
}
}
var srty = parseInt(self.oUl.style.left) + offset;
if (parseInt(self.oUl.style.left) < srty || parseInt(self.oUl.style.left) > srty) {
self.timer = setInterval(function() {
var mernum = parseInt(self.oUl.style.left);
var speed = (srty - mernum) / 10;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
self.oUl.style.left = parseInt(self.oUl.style.left) + speed + 'px';
if (parseInt(self.oUl.style.left) == srty) {
clearInterval(self.timer);
self.oUl.style.left = srty + 'px';
if (srty > -self.liW) {
self.oUl.style.left = -self.liW * (self.len - 2) + 'px';
}
if (srty < -self.liW * (self.len - 2)) {
self.oUl.style.left = -self.liW + 'px';
}
self.flag = true;
}
}, self.params.speeds)
}
}
}
}
var r = (function() {
var e = function(e) {
var a = this,
t = 0;
for (t = 0; t < e.length; t++) {
a[t] = e[t];
}
return a.length = e.length, this
};
e.prototype = {
addClass: function(e) {
if ("undefined" == typeof e) return this;
for (var a = e.split(" "), t = 0; t < a.length; t++)
for (var r = 0; r < this.length; r++) this[r].classList.add(a[t]);
return this
},
each: function(e) {
for (var a = 0; a < this.length; a++) e.call(this[a], a, this[a]);
return this
},
html: function(e) {
if ("undefined" == typeof e) return this[0] ? this[0].innerHTML : void 0;
for (var a = 0; a < this.length; a++) this[a].innerHTML = e;
return this
},
find: function(a) {
for (var t = [], r = 0; r < this.length; r++)
for (var i = this[r].querySelectorAll(a), s = 0; s < i.length; s++) t.push(i[s]);
return new e(t)
},
append: function(a) {
var t, r;
for (t = 0; t < this.length; t++)
if ("string" == typeof a) {
var i = document.createElement("div");
for (i.innerHTML = a; i.firstChild;) this[t].appendChild(i.firstChild)
} else if (a instanceof e)
for (r = 0; r < a.length; r++) this[t].appendChild(a[r]);
else this[t].appendChild(a);
return this
},
}
var a = function(a, t) {
var r = [],
i = 0;
if (a && !t && a instanceof e) {
return a;
}
if (a) {
if ("string" == typeof a) {
var s, n, o = a.trim();
if (o.indexOf("<") >= 0 && o.indexOf(">") >= 0) {
var l = "div";
for (0 === o.indexOf("<li") && (l = "ul"), 0 === o.indexOf("<tr") && (l = "tbody"), (0 === o.indexOf("<td") || 0 === o.indexOf("<th")) && (l = "tr"), 0 === o.indexOf("<tbody") && (l = "table"), 0 === o.indexOf("<option") && (l = "select"), n = document.createElement(l), n.innerHTML = a, i = 0; i < n.childNodes.length; i++) r.push(n.childNodes[i])
} else
for (s = t || "#" !== a[0] || a.match(/[ .<>:~]/) ? (t || document).querySelectorAll(a) : [document.getElementById(a.split("#")[1])], i = 0; i < s.length; i++) s[i] && r.push(s[i])
} else if (a.nodeType || a === window || a === document) {
r.push(a);
} else if (a.length > 0 && a[0].nodeType) {
for (i = 0; i < a.length; i++) {
r.push(a[i]);
}
}
}
return new e(r)
};
return a;
}())
window.bannerha = Bannerha;
})()
/*封装代码*/
</script>
</head>
<body>
<div class="header">
<a href="https://github.com/huanghanzhilian/widget" target="_blank">项目地址</a>
<a href="/widget/">返回首页</a>
</div>
<div class="main">
<div class="bannerha-container" id="banner1">
<ul class="bannerha-wrapper" >
<li class="bannerha-slide">slide-1</li>
<li class="bannerha-slide">slide-2</li>
<li class="bannerha-slide">slide-3</li>
<li class="bannerha-slide">slide-4</li>
<li class="bannerha-slide">slide-5</li>
</ul>
</div>
<script type="text/javascript">
new bannerha("#banner1");
</script>
<div class="code">
<p>
不传参数,执行默认参数,自动轮播
</p>
<p>new bannerha("#banner1");</p>
</div>
<div class="bannerha-container" id="banner2">
<ul class="bannerha-wrapper" >
<li class="bannerha-slide">slide-1</li>
<li class="bannerha-slide">slide-2</li>
<li class="bannerha-slide">slide-3</li>
<li class="bannerha-slide">slide-4</li>
<li class="bannerha-slide">slide-5</li>
</ul>
</div>
<script type="text/javascript">
new bannerha("#banner2",{
circle: true,
speeds: 50,
pnBtn: true,
autoPlay: true,
times: 1500
});
</script>
<div class="code">
<p>
调整自动轮播速度和缓冲速度
</p>
<p>new bannerha("#banner2",{
circle: true,
speeds: 50,
pnBtn: true,
autoPlay: true,
times: 1500
});</p>
</div>
<div class="bannerha-container" id="banner3">
<ul class="bannerha-wrapper" >
<li class="bannerha-slide">slide-1</li>
<li class="bannerha-slide">slide-2</li>
<li class="bannerha-slide">slide-3</li>
<li class="bannerha-slide">slide-4</li>
<li class="bannerha-slide">slide-5</li>
</ul>
</div>
<script type="text/javascript">
new bannerha("#banner3",{
autoPlay: false
});
</script>
<div class="code">
<p>
关闭自动轮播
</p>
<p>new bannerha("#banner3",{
autoPlay: false
});</p>
</div>
<div class="bannerha-container" id="banner4">
<ul class="bannerha-wrapper" >
<li class="bannerha-slide">slide-1</li>
<li class="bannerha-slide">slide-2</li>
<li class="bannerha-slide">slide-3</li>
<li class="bannerha-slide">slide-4</li>
<li class="bannerha-slide">slide-5</li>
</ul>
</div>
<script type="text/javascript">
new bannerha("#banner4",{
pnBtn: false
});
</script>
<div class="code">
<p>
关闭左右切换按钮
</p>
<p>new bannerha("#banner4",{
pnBtn: false
});</p>
</div>
<div class="bannerha-container" id="banner5">
<ul class="bannerha-wrapper" >
<li class="bannerha-slide">slide-1</li>
<li class="bannerha-slide">slide-2</li>
<li class="bannerha-slide">slide-3</li>
<li class="bannerha-slide">slide-4</li>
<li class="bannerha-slide">slide-5</li>
</ul>
</div>
<script type="text/javascript">
new bannerha("#banner5",{
circle: false
});
</script>
<div class="code">
<p>
关闭底部小按钮
</p>
<p>new bannerha("#banner5",{
circle: false
});</p>
</div>
<div class="example">
<div class="call">
<h1>调用方法:</h1>
<p>new bannerha(selector,{options});</p>
</div>
<h2>options参数</h2>
<table>
<thead>
<tr>
<th width="150">参数</th>
<th width="100">默认值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>circle</td>
<td>true</td>
<td>是否生成底部圆圈按钮</td>
</tr>
<tr>
<td>speeds</td>
<td>20</td>
<td>设置缓冲运动速度</td>
</tr>
<tr>
<td>pnBtn</td>
<td>true</td>
<td>是否生成左右切换按钮</td>
</tr>
<tr>
<td>autoPlay</td>
<td>true</td>
<td>是否自动轮播</td>
</tr>
<tr>
<td>times</td>
<td>3000</td>
<td>设置自动轮播间隔时间</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# 原生js
# 轮播
# JS实现左右无缝轮播图代码
# JS左右无缝轮播功能完整实例
# JS实现动态无缝轮播
# js实现无缝轮播图效果
# 原生js实现无缝轮播图
# js实现无缝轮播图特效
# js实现从右往左匀速显示图片(无缝轮播)
# js实现无缝轮播图
# js实现无缝轮播图插件封装
# js实现文字无缝轮播
# 多说
# 首页
# 默认值
# 不传
# Arial
# white
# Helvetica
# dashed
# bottom
# space
# break
# word
# moz
# wrap
# Mozilla
# border
# decoration
# width
# header
# Microsoft
相关文章:
如何快速搭建响应式可视化网站?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何通过WDCP绑定主域名及创建子域名站点?
javascript基本数据类型及类型检测常用方法小结
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何用IIS7快速搭建并优化网站站点?
图册素材网站设计制作软件,图册的导出方式有几种?
如何在IIS7中新建站点?详细步骤解析
建站之星客服服务时间及联系方式如何?
魔方云NAT建站如何实现端口转发?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何在万网自助建站平台快速创建网站?
如何通过IIS搭建网站并配置访问权限?
家具网站制作软件,家具厂怎么跑业务?
建站主机选哪家性价比最高?
如何在Windows服务器上快速搭建网站?
建站之星代理平台如何选择最佳方案?
如何通过虚拟主机快速完成网站搭建?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
高端建站三要素:定制模板、企业官网与响应式设计优化
名字制作网站免费,所有小说网站的名字?
宝塔面板如何快速创建新站点?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何高效完成独享虚拟主机建站?
如何自定义建站之星网站的导航菜单样式?
广州美橙建站如何快速搭建多端合一网站?
如何配置FTP站点权限与安全设置?
C#怎么使用委托和事件 C# delegate与event编程方法
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
长沙做网站要多少钱,长沙国安网络怎么样?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
建站之星如何保障用户数据免受黑客入侵?
如何通过cPanel快速搭建网站?
常州自助建站费用包含哪些项目?
济南专业网站制作公司,济南信息工程学校怎么样?
公司网站设计制作厂家,怎么创建自己的一个网站?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
装修招标网站设计制作流程,装修招标流程?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
建站之星如何优化SEO以实现高效排名?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
如何在新浪SAE免费搭建个人博客?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何在建站宝盒中设置产品搜索功能?
建站之星下载版如何获取与安装?
如何获取开源自助建站系统免费下载链接?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
建站之星微信建站一键生成小程序+多端营销系统
*请认真填写需求信息,我们会在24小时内与您取得联系。