jQuery Cycle自动调整大小以适应窗口大小的更改

4
如果我调整窗口大小,然后刷新滑块和图片,它们会自动调整以匹配浏览器的宽度。但是我需要在窗口大小调整时自动完成此操作....如何实现?可以怎么做? 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个回答

3
这是我如何成功完成的......
$(document).ready(function() {


$('#slideshow').cycle({

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

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

});

});

希望这能帮助任何想解决这个问题的人(我还没有完全测试它,当我添加分页按钮时,它似乎出了点问题,同样地,当使用类似scrollHorz的特效时,它也会出现问题..)


其实,有人知道为什么这个分页器出问题了吗?上一页应该向后滑动,下一页应该向前滑动,但它们都向前滑动了?可能是一个愚蠢的语法错误或者其他什么原因吧?(仍然惊讶于调整大小似乎有效,看起来有很多非常复杂的解决方案...) - Toki
这确实有效,但我遇到了一个问题,因为我正在处理的一个页面除了由jQuery cycle生成的内容之外没有其他内容。因此,图像下面的文本最终进入页脚。所以我通过为包含元素设置最小高度来解决了这个问题。 - JGallardo

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>

2

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

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

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

0

类似的帖子可以在这里找到 JavaScript 窗口大小调整事件

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

   });

}

检查是否有帮助


嗨,谢谢,但是我需要在onresize函数中放什么才能使其正常工作? - Toki
你可能想要进行节流处理,可以使用 DIY 的方式,例如使用 setTimeout,或者使用 underscore 库中的 _.throttle 方法。 - Geert-Jan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接