jQuery的方法实现轮播图,实现的轮播图最少由3幅图组成,每隔一段时间自动切换到下一幅图;鼠标停留时显示左右切换的按钮,点击左右按钮可以切换到上一幅或下一幅图;点击图下面的圆形下标,切换到对应的图。图片切换需无缝切换,首尾图片切换时无违和感的代码
时间: 2024-03-14 22:44:16 浏览: 103
好的,以下是jQuery实现轮播图的代码,可以实现您的要求:
HTML代码:
```html
<div class="slider">
<ul class="slider-list">
<li><img src="img1.jpg"></li>
<li><img src="img2.jpg"></li>
<li><img src="img3.jpg"></li>
</ul>
<div class="slider-nav">
<a href="#" class="slider-prev">上一张</a>
<ul class="slider-dots">
<li class="active"></li>
<li></li>
<li></li>
</ul>
<a href="#" class="slider-next">下一张</a>
</div>
</div>
```
CSS代码:
```css
.slider {
position: relative;
width: 800px;
height: 400px;
margin: 0 auto;
overflow: hidden;
}
.slider-list {
position: absolute;
left: 0;
top: 0;
width: 2400px;
height: 400px;
margin: 0;
padding: 0;
}
.slider-list li {
float: left;
width: 800px;
height: 400px;
list-style: none;
}
.slider-nav {
position: absolute;
z-index: 1;
left: 0;
bottom: 20px;
width: 100%;
text-align: center;
}
.slider-nav a {
display: inline-block;
width: 80px;
height: 30px;
line-height: 30px;
border: 1px solid #ccc;
border-radius: 4px;
margin: 0 10px;
text-decoration: none;
color: #333;
font-size: 14px;
background-color: #fff;
}
.slider-nav a:hover {
background-color: #ccc;
}
.slider-dots {
display: inline-block;
margin: 0;
padding: 0;
}
.slider-dots li {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 5px;
border: 1px solid #ccc;
margin: 0 5px;
cursor: pointer;
}
.slider-dots li.active {
background-color: #ccc;
}
```
JavaScript代码:
```javascript
(function($) {
$.fn.slider = function(options) {
var defaults = {
interval: 3000 // 图片切换时间间隔
};
var settings = $.extend({}, defaults, options);
return this.each(function() {
var $slider = $(this);
var $sliderList = $slider.find('.slider-list');
var $sliderItems = $sliderList.find('li');
var $sliderNav = $slider.find('.slider-nav');
var $sliderPrev = $sliderNav.find('.slider-prev');
var $sliderNext = $sliderNav.find('.slider-next');
var $sliderDots = $sliderNav.find('.slider-dots li');
var currentIndex = 0; // 当前显示图片的索引
var timer = null; // 计时器
// 切换图片
function switchSlider() {
// 计算下一个图片的索引
var nextIndex = currentIndex < $sliderItems.length - 1 ? currentIndex + 1 : 0;
// 当前图片淡出,下一个图片淡入
$sliderItems.eq(currentIndex).fadeOut(500);
$sliderItems.eq(nextIndex).fadeIn(500);
// 更新圆形下标
$sliderDots.eq(currentIndex).removeClass('active');
$sliderDots.eq(nextIndex).addClass('active');
// 更新当前图片的索引
currentIndex = nextIndex;
}
// 开始自动切换
function start() {
timer = setInterval(switchSlider, settings.interval);
}
// 停止自动切换
function stop() {
clearInterval(timer);
}
// 点击圆形下标切换图片
$sliderDots.on('click', function() {
if ($(this).hasClass('active')) {
return;
}
var index = $sliderDots.index(this);
$sliderItems.eq(currentIndex).fadeOut(500);
$sliderItems.eq(index).fadeIn(500);
$sliderDots.eq(currentIndex).removeClass('active');
$sliderDots.eq(index).addClass('active');
currentIndex = index;
});
// 鼠标停留时显示左右切换按钮
$slider.hover(function() {
$sliderPrev.show();
$sliderNext.show();
stop();
}, function() {
$sliderPrev.hide();
$sliderNext.hide();
start();
});
// 点击左右切换按钮切换图片
$sliderPrev.on('click', function() {
var prevIndex = currentIndex > 0 ? currentIndex - 1 : $sliderItems.length - 1;
$sliderItems.eq(currentIndex).fadeOut(500);
$sliderItems.eq(prevIndex).fadeIn(500);
$sliderDots.eq(currentIndex).removeClass('active');
$sliderDots.eq(prevIndex).addClass('active');
currentIndex = prevIndex;
});
$sliderNext.on('click', function() {
switchSlider();
});
// 初始化
$sliderItems.eq(0).show();
$sliderDots.eq(0).addClass('active');
start();
});
};
}(jQuery));
// 使用
$('.slider').slider();
```
您可以将上述代码复制到一个HTML文件中,并替换图片的路径,然后在浏览器中打开该文件,即可看到实现了轮播图的效果。
阅读全文