这可能非常明显,我完全想念它。
我已经搜索了几个小时,似乎无法找到一种方法来使用 jQuery 从下往上显示隐藏的 div。我想要实现的与以下链接完全相同,但相反:http: //jqueryui.com/demos/show/
我可以将一个 div 从底部滑到顶部,但这会在它移动时显示出来,而不是被“掩盖”。
就像我说的,这可能(应该?)真的很明显,我没有看到,但我一直在寻找年龄,无法找到解决这个相对简单问题的方法。
谢谢,
罗尼
这可能非常明显,我完全想念它。
我已经搜索了几个小时,似乎无法找到一种方法来使用 jQuery 从下往上显示隐藏的 div。我想要实现的与以下链接完全相同,但相反:http: //jqueryui.com/demos/show/
我可以将一个 div 从底部滑到顶部,但这会在它移动时显示出来,而不是被“掩盖”。
就像我说的,这可能(应该?)真的很明显,我没有看到,但我一直在寻找年龄,无法找到解决这个相对简单问题的方法。
谢谢,
罗尼
您正在寻找的效果有点难以实现,但即使没有包装器元素,也可以做到。
这里的主要问题是元素自然呈现自上而下,而不是自下而上。top
为相对定位元素的 the和CSS 属性设置动画height
允许我们实现上滑效果,但该元素仍会自上而下呈现:
+-------------------------------------------+
| | ^
| | | Hidden area collapses upwards.
| | |
+-------------------------------------------+ <-- 'top'
| | ^
| | Upper part of element (visible). | |
| | | | Animation goes bottom-up.
| | Element still renders top-down. | |
| | | |
+--|----------------------------------------+ <-- 'top + height'
| | | |
| | Lower part of element (hidden). | |
| V | |
+-------------------------------------------+
如果我们想模拟自底向上渲染,我们必须在动画期间修改元素的scrollTop属性,以使其下部始终保持在视图中:
+-------------------------------------------+
| | ^
| | Upper part of element (hidden). | | Hidden area collapses upwards.
| | | |
+--|----------------------------------------+ <-- 'top' and 'scrollTop'
| | | ^
| | Element still renders top-down. | |
| | | | Animation goes bottom-up.
| | Lower part of element (visible). | |
| V | |
+-------------------------------------------+ <-- 'top + height'
我们可以将animate()与一起使用scrollTop
,但在我的测试中与它一起使用top
并且height
无法正常工作(我怀疑在第一个动画步骤中scrollTop
被重置top
或被height
修改,所以它最终被卡住了0
)。
为了解决这个问题,我们可以scrollTop
通过我们可以传递给的可选step函数来处理自己animate()
。这个函数用两个参数调用,now
和是动画属性的当前值,是fx
有用信息的包装对象,比如被动画的元素和属性。now
fx
由于我们总是希望scrollTop
与 相同top
,因此我们只需要测试是否在我们的函数top
中进行动画处理。step
如果是,我们设置scrollTop
为now
。这个解决方案给出了可以接受的结果,尽管它对我的口味来说有点闪烁(不过,这可能是我的浏览器的产物)。
因此,总而言之,要实现这种效果,我们必须:
position: relative;
,以便我们可以为其top
属性设置动画,top
通过将元素设置为原始高度和height
来折叠元素0
,display: none;
中是必要的,因为应用了),top
到原始高度0
,height
scrollTop
的值top
。导致以下代码:
$("#click").click(function() {
var $revealMe = $("#revealMe");
var originalHeight = $revealMe.height();
$revealMe.css({
position: "relative",
top: originalHeight,
height: 0
}).show().animate({
top: 0,
height: originalHeight
}, {
duration: 1000,
step: function(now, fx) {
if (fx.prop == "top") {
$(fx.elem).scrollTop(now);
}
}
});
});
你可以在这个 fiddle中测试它。
使用带有方向选项的幻灯片而不是盲目的怎么样?这是一个jsFiddle 示例。
jQuery:
$( "#effect" ).show( 'slide', { direction: "down" } , 500);
如果您可以使用 jQuery UI 库,您可以:
$("div").hide("blind", {"direction": "down"});
$("div").show("blind", {"direction": "down"});
这不是诀窍吗:
$("div").show('blind', {}, 'slow');
盲效果方向默认:"up"
。
可能的值:up
, down
, left
, right
, vertical
, horizontal
.
例子:
$( document ).click(function() {
$( "#toggle" ).toggle( "blind", {"direction": "down"}, 1000 );
});
#toggle {
width: 100px;
height: 100px;
background: #ccc;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<p>Click anywhere to toggle the box.</p>
<div id="toggle"></div>