【发布时间】:2012-08-07 12:03:53
【问题描述】:
代码运行良好。 jsFiddle
唯一的问题是它在滑动时改变了它的宽度(当按下“点击这里”时)。似乎它削减了与#slider中的margin-left相对应的100px的宽度。
为什么会“跳”,如何解决?代码有什么问题吗?
里面有什么:一个居中的 div 滑块,它有一个内容和一个粘性页脚。
【问题讨论】:
代码运行良好。 jsFiddle
唯一的问题是它在滑动时改变了它的宽度(当按下“点击这里”时)。似乎它削减了与#slider中的margin-left相对应的100px的宽度。
为什么会“跳”,如何解决?代码有什么问题吗?
里面有什么:一个居中的 div 滑块,它有一个内容和一个粘性页脚。
【问题讨论】:
问题在于#slider 上的负边距。由于某种原因,它无法正确绘制动画。
这里有一个解决方案:http://jsfiddle.net/vyWTL/8/
它将margin-left 保持在0px,并使用jquery 计算left 应该是什么,给定容器的宽度。由于这是动态的,并且可以在调整视口宽度时发生变化,所以我将它放在一个在页面加载和窗口调整大小时调用的函数调用中。
【讨论】:
不确定它是否符合您的需求,但您可以简单地设置:
CSS
...
.slider{
...
bottom:0px;
...
}
然后简单地使用 jQuery .slideToggle() 来处理打开/关闭状态并且更加流畅:
JS
$("#slide-link").click(function (){
$('#slider').slideToggle();
});
编辑 1
对此进行了更新,以便 #slide-link 也可以与 #slider 切换。
我们所做的基本上是根据#slider 是否隐藏来为其设置动画:
if(!$('#slider').is(':hidden')){
$(this).animate({
top: $('#global-container').height()-23
},500)
}else{
$(this).animate({
top: '0px'
},500)
}
编辑 2
这是另一种更老套的方法,无需处理 if(#slider is hidden),因此只需编写一次 .animate 函数。
基本上 $('#slider').is(':hidden') 是一个布尔值,在 JS 中布尔值相当于 0/1 值,其中 false = 0 和 true = 1,因此您可以这样写:
var hid = $('#slider').is(':hidden')
$(this).animate({
top: (1-hid)*(contHeight)
},500)
contHeight 是 #global-container 高度 - #slide-link 高度。
EDIT 3 Scroll 问题
如果我在评论中遇到了您的问题,当您用分配的单词 id 填充内容部分时,id 不会滚动,但内容面板似乎填充了 wole #slider 并继续页面而无法滚动它。
这是因为 .content 没有固定高度,这是因为我们知道页脚是 70px 高,只是我们希望 .content 填满 #slider 内剩余的所有空间,但是这样.content 没有“固定值”,即在它的 css 中没有定义它的高度。所以我们需要做的是动态告诉他它有多高,就像我们用#slide做的那样,所以在JS中添加
$('.content').height(contHeight-70)
这样你现在可以添加:
overflow:hidden; //this is to prevent orizontal scroll
overflow-y:scroll; // this enables vertical scroll
希望我做对了。
【讨论】:
.ui-effects-wrapper{ overflow-x: visible !important; width: 100% !important; }
【讨论】: