jquery循环在调整大小时自动适合窗口宽度

时间:2012-07-13 09:23:37

标签: jquery cycle

如果我调整窗口大小然后刷新滑块并且其中的图像将调整大小以匹配浏览器宽度,但是我需要在窗口大小调整时自动执行....如何才能完成?

http://subzerostudio.com/Clients/perkinreveller/test.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.cycle.all.latest.js"></script>
<script type="text/javascript">

$(document).ready(function() {

$('.slideshow').cycle({
    timeout: 400,
    fx: 'scrollHorz',
    next: '#next',
    prev: '#prev',

});

});

</script>

</head>

<body>




<style>
body {
margin:0; padding:0;
height:100%;
width:100%;
position:absolute;
}

#slideshow-wrapper {
width:100%;
min-width:600px;
}

.slideshow {
width:100%;
}
.slideshow div,
.slideshow div img {
width:100% !important;
min-width:100%;
height:auto;
}

</style>


<div class="slideshow">

 <div>
     <img src="images/img1.jpg" alt="" />
 </div>

 <div>
     <img src="images/img1.jpg" alt="" />
 </div>

 <div>
     <img src="images/img1.jpg" alt="" />
 </div>

</div>    


</body>
</html>

4 个答案:

答案 0 :(得分:3)

这就是我设法做到的......

$(document).ready(function() {


$('#slideshow').cycle({

slideResize: true,
containerResize: true,
width: '100%',
height: '100%',
fit: 1,

fx: 'fade',
next: '#next',
prev: '#prev',  

});

});

希望这可以帮助任何想要解决这个问题的人(我还没有完全测试它,当我放入寻呼机按钮时它似乎播放,类似于使用诸如scrollHorz之类的fx似乎搞砸了它..)

答案 1 :(得分:2)

实际上(如docs所述),您唯一需要做的就是指定fit选项:

$('.slideshow').cycle({
  fit: 1
});

请注意,您可能还需要使用widthheight选项 - 对我来说不是必需的。
只有在fit: 1设置时,它们才会,并指定幻灯片应设置的宽度和高度。

答案 2 :(得分:2)

您可以将此代码添加到您的javascript

$(window).resize(function() {

    var slideDiv = $('.slideshow');

    /* ratio = (width / height) is the aspect ratio of the image. 
       You can change this according to dimensions of the image you are
       using */

    var ratio = (640/426);  // width and height of your image 

    var w = slideDiv.parent().width();
    var h = w / ratio;

    slideDiv.width(w);
    slideDiv.height(h);

    slideDiv.children().each(function() {
        $(this).width(w);  // "this" is the img element inside your slideshow
        $(this).height(h);  // "this" is the img element inside your slideshow
    });

});

我已经完成了这个JSFiddle https://jsfiddle.net/0x24u41f/25/,因此您可以测试上述解决方案。

无需使用标记“div”包装图像。

您的HTML代码可以是这样的:

<div class="slideshow">
    <img src="images/img1.jpg" alt="" />
    <img src="images/img2.jpg" alt="" />
    <img src="images/img3.jpg" alt="" />
</div>

答案 3 :(得分:0)

此处可以找到类似帖子JavaScript window resize event

window.onresize = function(event) {
   $('.slideshow').cycle({
     timeout: 400,
     fx: 'scrollHorz',
     next: '#next',
     prev: '#prev',

   });

}

检查是否有帮助