【发布时间】:2012-04-08 02:02:50
【问题描述】:
我在我的投资组合网站中使用 jScrollPane(好东西!)作为滚动条,但我遇到了一个我自己似乎无法解决的问题。
当我使用 jQuery 更改 div 的宽度和长度时,问题会突出显示。
我有一个宽度为 180 像素的列 (div#projects)。在那个 div 里面有一个链接列表。当用户单击链接时,div 需要“增长”到 480px 宽度。 div的内容也发生了变化。链接列表消失,并显示项目列表。那件作品有效。但是 jScrollPane 不会像我希望的那样随着内容的增长而增长。我有两个不同的问题。
Safari: 在 Safari 中,垂直滚动条会随着内容自动增长。所以效果很好。但是当 div 的宽度增长到 400px 时,突然出现一个宽度为 180px(div 之前的宽度)的水平滚动条。 .
火狐: 然而,最大的问题是在 Firefox 中。在那里,垂直滚动条不会随着内容自动增长。我尝试使用 autoReinitialise,它适用于垂直滚动条随内容增长,但给我带来了另一个问题。当我使用 autoReinitialise 时,刚刚增长到 480px 的 div 又回到了 180px。所以 autoReinitialise 不能解决我的问题。
在 Firefox 中,您还可以看到一个 div 看起来不像它应该的样子(如果您单击了一个链接并查看了项目)。这大约是之前内容(带有链接的列表)的高度。
这是我最大的问题。但我还有另一个小问题:是否可以始终显示滚动条或为每个 div.scroll-pane 提供独特的类? 因为当我将 div#projects 的宽度调整为 480px 时,我还必须更改滚动窗格容器的宽度。现在,我使用 jQuery 为每个 div 赋予一个独特的类。如果滚动条并不总是可见,那么 div 的数量并不总是相同的。所以现在我总是通过在内容下放置另一个 div 来显示滚动条。但是,如果我可以给每个滚动窗格 div 一个唯一的类(手动),我就不需要总是显示滚动条。
有关此内容的网站:http://nieuw.yworks.nl。部分是“项目” div。单击该 div 中的链接,您将看到问题。 (Safari 和部分 Firefox)。
我希望有人可以帮助我解决这个问题。我现在已经挣扎了2天了。
提前致谢(希望我的英语没那么差:))
编辑:我使用 Safari 5.4.1 和 Firefox 9.0.1。没有在 Internet Explorer 中测试它,我猜这也会导致更多问题。
我想我找到了问题所在。这些 div(图片:http://nieuw.yworks.nl/extern/divs.png)仍然是 180 像素而不是 480 像素。唯一的问题是,我现在不知道为什么。这是代码:
$(".item-30").css("width", "480px"); $(".item-31").css("width", "420px");
$("#projects").stop().animate({width:'480px'},{queue:false, duration:300});
$("#projects").css("background","#fff");
$('#projectsList').hide();
$('#projectsContent').show();
$("#contact").stop().animate({left:'1524px'},{queue:false, duration:300});
$("#footer").stop().animate({left:'1745px'},{queue:false, duration:300});
var api = $('#projects').jScrollPane().data('jsp');
api.destroy();
$('#projects').jScrollPane({contentWidth:480}).data('jsp');
在 Firefox 中我不使用似乎不起作用的动画原因,我只使用 $("#projects").css("width", "480px");
这与我在问题的第二部分中提到的问题相同。 .jspContainer 和 .jspPane div 没有唯一 ID。而且我不能给他们,因为 jScrollPane 会生成它们。如果我调整 .jspContainer 和 .jspPane 而不是那些 div。如果我通过 jQuery 调整它们的宽度,它将被覆盖。
【问题讨论】:
标签: jquery firefox safari cross-browser jscrollpane