利用JavaScript和HTML和css并且不用任何库做一个简单的幻灯片效果,这个幻灯片的好处是不引用任何外在的库,提高了性能,由于采用了较少的代码,这样可以放在页面的任何地方而不担心要加载多余的额外文件。
1.首先我们看看最简单的幻灯片
HTML代码如下:
<ul id="slides">
<li class="slide showing">Slide 1</li>
<li class="slide">Slide 2</li>
<li class="slide">Slide 3</li>
<li class="slide">Slide 4</li>
<li class="slide">Slide 5</li>
</ul>
css代码如下:
/*
显示当前幻灯片,使用transition是过度淡入淡出的透明效果
*/
#slides {
position: relative;
height: 300px;
padding: 0px;
margin: 0px;
list-style-type: none;
}
.slide {
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
opacity: 0;
z-index: 1;
-webkit-transition: opacity 1s;
-moz-transition: opacity 1s;
-o-transition: opacity 1s;
transition: opacity 1s;
}
.showing {
opacity: 1;
z-index: 2;
}
/*
显示当前幻灯片的文字、背景样式
*/
.slide {
font-size: 40px;
padding: 40px;
box-sizing: border-box;
background: #333;
color: #fff;
}
.slide:nth-of-type(1) {
background: red;
}
.slide:nth-of-type(2) {
background: orange;
}
.slide:nth-of-type(3) {
background: green;
}
.slide:nth-of-type(4) {
background: blue;
}
.slide:nth-of-type(5) {
background: purple;
}
JavaScript代码如下:
/*
为了隐藏当前的幻灯片和显示下一张,仅仅是改变了标签中的类名;
先使用querySelectorAll找到所有的li,然后调用nextSlide函数控制着幻灯片的显示效果,然后用定时函数每2秒调用nextSlide函数实现功能。
*/
var slides = document.querySelectorAll('#slides .slide');
var currentSlide = 0;
var slideInterval = setInterval(nextSlide,2000);
function nextSlide() {
slides[currentSlide].className = 'slide';
currentSlide = (currentSlide+1)%slides.length;
slides[currentSlide].className = 'slide showing';
}
显示效果: