这是国外的网友做的h5自动幻灯片
原文链接
http://www.htmlgoodies.com/beyond/javascript/stips/create-a-simple-automated-slideshow.html
我想展示一个简单的循环幻灯片在我的网站上有一天,它似乎所有的插件我遇到过于笨重的琐碎的目的,所以我将我的注意力转向独立的解决方案。 最后,我发现jQuery是所有我需要完成我想。 在今天的文章中,我将向您展示我是如何做到的。
一些人包括JavaScript源图像列表,但我宁愿把它们在HTML领域,因为它们是页面内容的一部分。 我都懒得算出所有图像的维度,这就是在JS完成的。 我原来的列表包含大量的t恤与religion-themed图形和文本。 类似“崇拜我或我将永远折磨你! 有美好的一天。 BFF——神”。 你可能不认为这是一个特别有趣的话题,但在右边轻松的心态,宗教可以搞笑素材。 问问Monty Python。 尽管如此,今天的演示幻灯片是一个更少的煽动性的主题,即cars.A
A newer Mustang.
A modern Camaro.
An oldie but a goodie!
More old cars.
A good rendering of a classic race car.
body {
background-color: gray;
}
#slideshow {
position: relative;
width: 300px;
height: 510px;
padding: 10px;
}
#slideshow > div {
position: absolute;
text-align: center;
overflow: visible;
display: none;
}
#slideshow > div > img {
border: 2px solid white;
box-shadow: 0 0 20px white;
}
$("#slideshow > div").hide();
setInterval(function() {
$('#slideshow > div:first')
.fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo('#slideshow');
}, 5000);
定心不同大小图像动态没有在公园里散步,主要是因为这取决于大小的图像,这是在加载之前不知道。 这个问题的解决方案是创建一个新的图像对象和分配其src的形象元素。 导致浏览器下载图片,从而分配它的维度:
jQuery.fn.setDivSize = function(extraHeight, extraWidth) {
var img = new Image();
img.src = this.children('img').attr('src');
//the extra height and width are to accommodate
//the text below the images.
this.height(img.height + extraHeight)
.width (img.width + extraHeight);
return this;
}
这是中心的功能图像相对于其父母或包含基于一个布尔参数窗口(真的是父母):
jQuery.fn.center = function( parent ) {
parent = $( parent ? this.parent() : window );
this.css({
"position": "absolute",
"top": (((parent.height() - this.outerHeight()) / 2) + parent.scrollTop() + "px"),
"left": (((parent.width() - this.outerWidth()) / 2) + parent.scrollLeft() + "px")
});
return this;
}
这一次,我包括一些settimeout给元素一个机会完全呈现。 否则,我注意到在图像边缘不一致。
$(function() {
setTimeout(function(){
//display the first image
$('#slideshow > div:first')
.setDivSize(30, 40)
.center(false)
.fadeIn(1000);
//loop through the remaining images
setInterval(function() {
$('#slideshow > div:first')
.fadeOut(1000)
.next()
.setDivSize(30,40)
.center(false)
.fadeIn(1000)
.end()
.appendTo('#slideshow');
}, 5000);
}, 500 );
});