本文主要是介绍jq自定义插件—$.fn的使用之(轮播图)兼容性都ok,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>图片轮播</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<style type="text/css">
html,body{
padding: 0;
margin: 0;
}
ul,ul li{
list-style: none;
margin: 0;
padding: 0;
}
.box{
}
#banner{
position: relative;
height:auto;
overflow: hidden;
}
#banner ul{
position:absolute;
}
#banner ul li{
float: left;
}
#banner ul li img{
width: 100%;
height: 100%;
}
#banner #prevBtn,#banner #nextBtn{
height:80px;
width:30px;
background:rgba(0,0,0,0.5);
position:absolute;
top:50%;
margin-top:-40px;
font-size:30px;
line-height:80px;
text-align:center;
text-decoration:none;
color:white;
opacity: 0;
transition: opacity 0.8s ease;
}
#banner #prevBtn{
left:0;
}
#banner #nextBtn{
right:0;
}
#banner:hover #prevBtn,#banner:hover #nextBtn{
opacity: 1;
}
.dot{
height:10px;
width:10px;
border-radius:10px;
background:#2196f3;
display:inline-block;
margin:5px;
}
.on{
background: #009688;
}
</style>
</head>
<body>
<div class="box">
<div id="banner">
<ul id="banner-wrap">
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img1.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img2.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img3.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img4.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img5.jpg">
</li>
</ul>
</div>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
(function($){ //形成闭包,将作用域进行限定
$.fn.bannerSwiper=function(option){
this.main={
boxWrap:null,//必填
nextBtn:false,//是否往下启动按钮
prevBtn:false,//是否往上启动按钮
autoPlay:false,//是否启动自动播放
times:3000,//自动轮播的时间间隔,
speed:600,//点击按钮是切换的速度
circle:false,//是否启动小圆点
circleAlign:"center",//小圆点的对其方式
circleClick:false//小圆点是否可以点击
};
var self=this;
this.time=null;
this.options=$.extend({},this.main,option);
self.flag=true;
// 插件入口
this.init=function(){
this.bulid();
}
this.bulid=function(){
var self=this;
var wrap=self.options.boxWrap;
self.num=1;
self.nowTime=+new Date();
self.width=$(window).width();
var firstImg=$(wrap).find('li').first();
var lastImg=$(wrap).find('li').last();
$(wrap).append(firstImg.clone());
$(wrap).prepend(lastImg.clone());
self.length=$(wrap).find('li').length;
$(wrap).width(self.width*self.length);
$(wrap).find('li').width(self.width)
$(wrap).parent().height(480);
$(wrap).parent().width(self.width);
$(wrap).css({'left':-self.width*self.num})
// 是否启动自动轮播
if(self.options.autoPlay){
self.plays();
}
// 是否启动按钮
if(self.options.nextBtn){
self.NextBtn();
}
// 是否启动按钮
if(self.options.prevBtn){
self.prevBtn();
}
// 是否启动小圆点
if(self.options.circle){
self.circle()
}
if(self.options.circleClick){
self.clickCircle();
}
}
// // 鼠标移入时
self.on('mouseenter',function(){
self.stops();
})
// 鼠标移出时
self.on('mouseleave',function(){
self.plays(1);
})
// 开始计时器,自动轮播
this.plays=function(){
var self=this;
// self.stops();
console.log('play')
this.time=setInterval(function(){
self.go(-self.width)
},self.options.times);
}
// 停止计时器
this.stops=function(){
console.log('stop');
clearInterval(self.time)
}
// 手动创建按钮元素
this.prevBtn=function(){
var self=this;
var ele=$("<a href='javascript:;' id='prevBtn'><</a>");
self.append(ele);
$('#prevBtn').bind("click",function(){
self.go(self.width);
})
}
// 手动创建按钮元素
this.NextBtn=function(){
var self=this;
var ele=$("<a href='javascript:;' id='nextBtn'>></a>");
self.append(ele)
$('#nextBtn').bind("click",function(){
self.go(-self.width);
})
}
// 手动创建小圆点
this.circle=function(){
var self=this;
var ele=$('<div id="circle-wrap"></div>');
for(var i=0;i<self.length-2;i++){
$('<a class="dot" href="javascript:;"></a>').appendTo(ele)
}
ele.css({
"position":"absolute",
'bottom':'0',
'right':'0',
'left':'0',
'height':'20px',
"padding":"0 10px",
'text-align':self.options.circleAlign
});
self.append(ele);
self.playCircle(this.num-1);
}
//小圆点指定当前项
this.playCircle=function(num){
$('#circle-wrap').find('.dot').eq(num).addClass('on').siblings().removeClass('on');
}
// 点击小圆点
this.clickCircle=function(){
var self=this;
$('#circle-wrap').find('.dot').on('click',function(){
self.num=$(this).index()+1;
self.circlePlay()
})
}
// 点击小圆点,图片切换
this.circlePlay=function(){
self.flag=true;
if(self.flag){
self.flag=false;
$(self.options.boxWrap).stop().animate({
'left':-self.num*self.width
},self.options.speed,function(){
self.flag=true;
});
}
self.playCircle(this.num-1);
}
// 点击按钮,进行轮播,以及自动轮播
this.go=function(offset){
var self=this;
if(self.flag){
self.flag=false;
if(offset<0){
self.num++;
if(self.num>self.length-2){
self.num=1;
}
}
if(offset>0){
self.num--;
if(self.num<=0){
self.num=self.length-2
}
}
if(Math.ceil($(self.options.boxWrap).position().left)<-(self.length-2)*self.width){
$(self.options.boxWrap).css({
'left':-self.width
});
}
if(Math.ceil($(self.options.boxWrap).position().left)>-self.length){
$(self.options.boxWrap).css({
'left':-self.width*(self.length-2)
})
}
self.playCircle(this.num-1);
$(self.options.boxWrap).stop().animate({
'left':$(self.options.boxWrap).position().left+offset
},self.options.speed,function(){
self.flag=true;
});
}
}
this.init();
}
})(jQuery);
$('#banner').bannerSwiper({
boxWrap:"#banner-wrap",
nextBtn:true,
prevBtn:true,
autoPlay:true,
circle:true,
circleClick:true
})
</script>
</body>
</html>
/*另外一种最常见的兼容ie7,8的banner*/
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script src="js/jquery.min.js"></script>
<style type="text/css">
#ad {
width: 1350px;
height: 370px;
overflow: hidden;
margin-left: -5px;
position: relative;
}
#ad ul {
list-style: none;
position: absolute;
margin-left: -40px;
}
#ad ul li {
float: left;
width: 1350px;
height: 370px;
position: relative;
}
.slideshortcut a {
color: #000000;
text-decoration: none;
background-color: #fff;
display: block;
position: absolute;
z-index: 500;
top: 150px;
width: 50px;
height: 50px;
border: 1px solid red;
font-size: 40px;
line-height: 40px;
text-align: center;
opacity: 0;
}
.slideshortcut a:hover {
color: #000000;
text-decoration: none;
}
.prev {
left: 150px;
}
.next {
left: 1200px;
}
.jiaodiandiv {
position: absolute;
z-index: 200;
top: 320px;
left: 42%
}
.jiaodiandiv ul {
list-style: none;
}
.jiaodiandiv ul li {
width: 30px;
height: 30px;
margin-left: 10px;
float: left;
border: 1px solid #B7B7B7;
background-color: #B7B7B7;
border-radius: 15px;
text-align: center;
}
#selectli {
background-color: #FF4400;
}
.jiaodiandiv li:hover {
cursor: pointer;
}
.jiaodiandiv span {
font-size: 20px;
line-height: 30px;
}
</style>
</head>
<body>
<div id="ad">
<ul>
<li> <a href="#" title="位置1"><img src="ad.png" /></a> </li>
<li> <a href="#" title="位置2"><img src="1.jpg" /></a> </li>
<li> <a href="#" title="位置3"><img src="2.jpg" /></a> </li>
<li> <a href="#" title="位置4"><img src="3.jpg" /></a> </li>
</ul>
</div>
<div class="slideshortcut">
<a id="SlidePrev" class="prev"><</a>
<a id="SlideNext" class="next">></a>
</div>
<div class="jiaodiandiv">
<ul>
<li id="selectli"><span>1</span></li>
<li><span>2</span></li>
<li><span>3</span></li>
<li><span>4</span></li>
</ul>
</div>
<script>
$(document).ready(function() {
/*轮播*/
var index = 0;
// var jdlis = $('.jiaodiandiv li');
/*焦点li元素集合*/
var timer;
var liWidth = $('#ad').width();
var len = $("#ad ul li").length;
$("#ad ul").css("width", liWidth * (len));//左右滚动,即所有li元素都是在同一排向左浮动,所以这里需要计算出外围ul元素的宽度
$("#SlidePrev").click(function() {//上一张按钮
clearInterval(timer);
index -= 1;
if (index == -1) {
index = len - 1;
}
showPic(index);
});
$("#SlideNext").click(function() { //下一张按钮
clearInterval(timer);
index += 1;
if (index == len) {
index = 0;
}
showPic(index);
});
//轮播
$('#ad').hover(function() {
clearInterval(timer);
/*停止动画*/
$('.slideshortcut a').show().css('opacity', '0.4');
},
function() {
$('.slideshortcut a').hide();
timer = setInterval(function() {
showPic(index);
index++;
if (index == len) {
index = 0;
}
},
2000);
}).trigger("mouseleave");
/*显示index图片*/
function showPic(index) {
var nowLeft = -index * liWidth;
jdlis.eq(index).css('backgroundColor', '#FF4400');
jdlis.not(jdlis.eq(index)).css('backgroundColor', '#B7B7B7');
$("#ad ul").stop(true, false).animate({
"left": nowLeft
},
300);
}
$('.slideshortcut a').mouseover(function() {
$('.slideshortcut a').show();
});
$('.prev').mouseover(function() {
$(this).css({
opacity: '0.95',
cursor: 'pointer'
});
});
$('.next').mouseover(function() {
$(this).css({
opacity: '0.95',
cursor: 'pointer'
});
});
/*点击焦点区的div显示对应图*/
jdlis.click(function() {
clearInterval(timer);
index = jdlis.index(this);
showPic(index);
});
});
</script>
</body>
</html>
这篇关于jq自定义插件—$.fn的使用之(轮播图)兼容性都ok的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!