jQuery imagesloaded插件
jQuery imagesloaded插件 大家好 我正在尝试创建一个带有缩略图的简单幻灯片库 我正在使用cycle插件创建幻灯片和缩略图 缩略图位于一个粘性的页脚中,该页脚将停留在窗口底部 我希望幻灯片图像填充窗口的其余部分,并在调整窗口大小时进行缩放 我用这个函数做这个jQuery imagesloaded插件,jquery,Jquery,jQuery imagesloaded插件 大家好 我正在尝试创建一个带有缩略图的简单幻灯片库 我正在使用cycle插件创建幻灯片和缩略图 缩略图位于一个粘性的页脚中,该页脚将停留在窗口底部 我希望幻灯片图像填充窗口的其余部分,并在调整窗口大小时进行缩放 我用这个函数做这个 function resizeImg() { $('#slideshow img').css({'height':$('#wrap').height()-footerHeight,'width':'au
function resizeImg() {
$('#slideshow img').css({'height':$('#wrap').height()-footerHeight,'width':'auto'});
}
此时,在调整窗口大小时,此功能起作用,但在首次加载图像时则不起作用
我需要在加载图像时调用该函数
我找到了imagesloaded插件,它看起来可以工作-
我的问题是我看不到如何在我的代码中使用插件
有人能解释一下我如何使用imagesloaded插件调用我的resizeImg函数吗
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<!--jQuery-->
<script type="text/javascript" src="js/jquery1.7.2.js"></script>
<script type="text/javascript" src="js/cycle.js"></script>
<!--CSS-->
<style type="text/css">
*{
margin:0;
padding:0;
}
ul{
list-style:none;
}
/**/
html, body {
height:100%;
text-align:center;
}
#wrap {
margin:auto;
min-height:100%;
margin-top:-100px;
text-align:left;
}
* html #wrap {
height:100%
}
#header {
background:red;
border-top:100px solid #fff;
}
#footer {
background:#eee;
margin:auto;
height:100px;
clear:both;
}
/**/
#slideshow img{
margin:0 0 0 55px;
height:100%;
}
div#thumbWrap {
position: relative;
height: 100px;
width: 500px;
overflow: auto;
margin:0 0 0 50px;
}
ul#thumbs {
display: block;
width: 2000px;
padding: 15px 0 0 15px;
}
ul#thumbs li {
display: block;
float: left;
padding: 0 4px;
}
ul#thumbs a {
display: block;
text-decoration: none;
}
ul#thumbs img {
border: 3px #fff solid;
}
ul#thumbs a:hover img {
opacity: 0.5;
}
#slideshow img { display: none }
#slideshow img.first { display: block }
</style>
</head>
<body>
<div id="wrap">
<div id="header">
</div><!-- #header -->
<div id="slideshow">
<img src="images/plane01.jpg" alt="" class="first"/>
<img src="images/plane02.jpg" alt="" />
<img src="images/plane03.jpg" alt="" />
<img src="images/plane04.jpg" alt="" />
<img src="images/plane05.jpg" alt="" />
<img src="images/plane06.jpg" alt="" />
<img src="images/plane07.jpg" alt="" />
<img src="images/plane08.jpg" alt="" />
<img src="images/plane09.jpg" alt="" />
<img src="images/plane10.jpg" alt="" />
</div><!-- #content -->
</div><!-- #wrap -->
<div id="footer">
<div id="thumbWrap">
<ul id="thumbs">
</ul>
</div>
</div>
<script type="text/javascript">
$(window).load(function() {
resizeImg();
/*-cycle
*/
$('#slideshow').cycle({
fx: 'fade',
speed: 'fast',
timeout: 0,
pager: '#thumbs',
before: resizeImg(),
pagerAnchorBuilder: function(idx, slide) {
return '<li><a href="#"><img src="' + slide.src + '" width="auto" height="50" /></a></li>';
}
});
/*-thumbnailScroll
*/
var div = $('div#thumbWrap'), ul = $('ul#thumbs'), ulPadding = 15;
var divWidth = div.width();
div.css('overflow','hidden');
var lastLi = ul.find('li:last-child');
div.mousemove(function(e){
var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth() + ulPadding;
var left = (e.pageX - div.offset().left) * (ulWidth-divWidth) / divWidth;
div.scrollLeft(left);
});
var footerHeight = $('#footer').height();
function resizeImg() {
$('#slideshow img').css({'height':$('#wrap').height()-footerHeight,'width':'auto'});
}
$(window)
.scroll(resizeImg)
.resize(resizeImg)
.onload(resizeImg)
});
</script>
</body>
</html>
在cycle函数中,在加载图像后调用resize函数
我留下的问题是在加载图像后调用resizeImg函数时图像大小的跳跃
任何人都能找到一种方法来解决这种大小跳跃的问题吗?您可以尝试这样做(将此代码添加到$(window.load(…)事件处理程序中)-->
$(“#幻灯片”).imagesLoaded(函数($images,$property,$breaked){
//回调提供了三个参数:
//$images:包含所有图像的jQuery对象
//$PROPERT:具有正确加载的图像的jQuery对象
//$BREAKED:具有损坏图像的jQuery对象
//`this`是容器的jQuery对象
console.log($images.length+'images总计已加载到'+this中);
log($property.length+‘正确加载的图像’);
log($breaked.length+'breaked images');
resizeImg();//在resizeImg中,首先尝试使用window而不是“#wrap”,以获得图像缩放到的最大高度:
function resizeImg() {
$('#slideshow img').css({'height':$(window).height()-footerHeight,'width':'auto'});
}
要使用imagesLoaded插件,在将脚本添加到头部之后,可以在窗口滚动、调整大小和加载处理程序之后尝试这一行:
$('#slideshow img').imagesLoaded(resizeImg);
谢谢chrisM-我已经试过了,但它不起作用,应该把它放在我的post.rt2800中-当页面加载和第一张图像调整大小时,它起作用,但当幻灯片开始或我点击缩略图时,图像会恢复到正常大小。好的,我想图像加载后会调用imagesLoaded函数(页面加载完成时)-当我单击缩略图时,图像已经加载,因此imagesLoaded函数不会运行-当我单击缩略图时,如何调用我的resizeImg函数。
function resizeImg() {
$('#slideshow img').css({'height':$(window).height()-footerHeight,'width':'auto'});
}
$('#slideshow img').imagesLoaded(resizeImg);