尝试使用jquery循环幻灯片调整窗口大小
我试图在带有jQuery循环幻灯片的页面上运行JavaScript窗口调整脚本,但我遇到了一些似乎无法解决的错误。它会在页面加载时调整第一幅图像的大小,但随后会忘记后续幻灯片的新高度/宽度属性。我可以在使用jQuery之前和之后再次设置这些选项,但在调整大小之前,图像总是以全尺寸闪烁片刻 jQuery.cycle是否正在将幻灯片大小调整回其原始大小?如果是这样的话,我该如何阻止尝试使用jquery循环幻灯片调整窗口大小,jquery,resize,slideshow,cycle,Jquery,Resize,Slideshow,Cycle,我试图在带有jQuery循环幻灯片的页面上运行JavaScript窗口调整脚本,但我遇到了一些似乎无法解决的错误。它会在页面加载时调整第一幅图像的大小,但随后会忘记后续幻灯片的新高度/宽度属性。我可以在使用jQuery之前和之后再次设置这些选项,但在调整大小之前,图像总是以全尺寸闪烁片刻 jQuery.cycle是否正在将幻灯片大小调整回其原始大小?如果是这样的话,我该如何阻止 $(document).ready(function () { $('.slideshow').cycle({
$(document).ready(function () {
$('.slideshow').cycle({
fx: 'fade',
speed: 200,
timeout: 1000,
pause: 1,
before: function (currSlideElement, nextSlideElement, options, forwardFlag) {
resize();
},
after: function (currSlideElement, nextSlideElement, options, forwardFlag) {
resize();
}
});
$('.slideshow').find('img').css("height", "0");
$('#image').hide().idle(1000).fadeIn();
resize();
});
$(window).resize(function () {
resize();
});
function resize() {
var theheight = window.innerHeight;
var thewidth = window.innerWidth;
var imageheight = theheight - 200;
if (imageheight > 540) {
imageheight = 540;
}
if (imageheight < 300) {
imageheight = 300;
}
var imagewidth = imageheight / 0.6585365;
$(".slide").css("height", imageheight);
$(".slide").css("width", imagewidth);
$(".slide").attr("height", imageheight);
$(".slide").attr("width", imagewidth);
}
$(文档).ready(函数(){
$('.slideshow')。循环({
外汇:“淡出”,
速度:200,,
超时:1000,
暂停:1,
before:函数(currSlideElement、nextSlideElement、options、forwardFlag){
调整大小();
},
之后:函数(currSlideElement、nextSlideElement、options、forwardFlag){
调整大小();
}
});
$('.slideshow').find('img').css(“高度”,“0”);
$('#image').hide().idle(1000.fadeIn();
调整大小();
});
$(窗口)。调整大小(函数(){
调整大小();
});
函数resize(){
var theheight=window.innerHeight;
var thewidth=window.innerWidth;
var imageheight=高度-200;
如果(图像高度>540){
图像高度=540;
}
如果(图像高度<300){
图像高度=300;
}
var imagewidth=imageheight/0.6585365;
$(“.slide”).css(“高度”,图像高度);
$(“.slide”).css(“宽度”,图像宽度);
$(“.slide”).attr(“高度”,图像高度);
$(“.slide”).attr(“宽度”,图像宽度);
}
这对你有用吗
在选项中,添加以下内容:
cssBefore: {
top: 0,
left: 0,
width: wwidth,
height: wheight,
zIndex: 1
}
对于resize,添加几个变量以匹配在resize上设置的变量:
var wheight, wwidth;
function resize() {
wheight = Math.Min(window.innerHeight - 200, 540);
wwidth = Math.Min(window.innerWidth, 300) / 0.6585365;
$(".slide").width(wwidth).height(wheight);
});
无需在
之前:
和之后:
再调用此函数,只需在$(窗口)中加载一次即可。resize()
谢谢Nick,这是朝着正确方向迈出的一步。我设法让它与下面的人一起工作。奇怪的是,如果我没有将animIn:height/width设置为与css中不同的值,它就不起作用了。在此之前:有什么想法吗
$('.slideshow').cycle({
fx: 'custom',
speed: 200,
timeout : 1000,
pause: 1,
cssBefore: {
left: 0,
top: 0,
width: imagewidth,
height: imageheight,
opacity: 0,
zIndex: 1
},
animOut: {
opacity: 0
},
animIn: {
left: 0,
top: 0,
width: imagewidth +1,
height: imageheight +1,
opacity: 1,
zIndex: 1
},
cssAfter: {
zIndex: 0
}
});
这在类似的情况下对我有效:
$(window).resize(function(){
$('.lr-slider').each(function(){
newWidth = $(this).parent('div').width()
$(this).width(newWidth)
$(this).children('div').width(newWidth)
})
})
注意事项:
看起来cycle在您第一次调用幻灯片容器元素时会将其宽度和高度存储一次,然后将传入的幻灯片设置为这些尺寸,而不管调整大小脚本执行什么操作 我最近也遇到了同样的问题:选项的组合
$slideshow.cycle({
containerResize: false,
slideResize: false,
fit: 1
});
及
为我工作。关键在于它的适用性:1--文档描述它的方式使它看起来完全像我不想要的,但它产生了预期的效果。不幸的是,无法解释。无论我在循环中插入了什么,选项对我有效(尝试了“100%”或“自动”),所以我通过css解决了这个问题
.slideshowContainer {
width: auto !important;
}
顺便说一句,100%!重要人物也会这样做。因此.slideshowContainer将占据周围元素的100%宽度。大家好,请为我们评论一下您的代码新手。。。我也陷入了同样的问题。CssBefore是否避免了“恢复到原始大小”的事情?谢谢。我找到了使用传统CSS的方法,就像这里解释的那样(你必须添加“!important”声明以避免返回原始大小)。另一篇有趣的文章,如果你想根据用户的屏幕分辨率调整cycle插件的大小,可以在这里找到-请你发布一个完整的解决方案?我不知道如何在这里合并源代码来调整大小!谢谢您好-请您发布完整的解决方案好吗?我不知道如何在这里合并源代码来调整大小!谢谢也为我工作。
.slideshowContainer {
width: auto !important;
}