我正在创建一个页面,它有一个隐藏的表单,当点击链接时,它应该动画到视图中。这是通过将表单绝对放置在容器之外,给容器一个相对位置,然后将表单动画化到它的顶部位置来实现的。
问题:
当我单击链接时,表单会显示在容器内容下方,将内容向上推,似乎忽略了“溢出:隐藏”属性。
然后,该表格动画起来,创造出一种奇怪的效果。它应该在内容上整齐地设置动画,就好像从底部出现一样,div
而不会影响容器内容。
请参阅此 jsFiddle 进行演示。
HTML
<div class="theContainer">
<h1>Welcome</h1>
<p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores erat.</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et um dolor sit amet..</p> <a class="showForm" href="#show-form" title="Show the form">Show the form!</a>
<div class="theForm">
<h2>The Form</h2>
<p>Slitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<input autofocus="autofocus" max_length="255" type="text" name="email" id="id_email" />
</div>
CSS
.theContainer {
background: lightblue;
margin: 30px auto;
padding: 5px 20px 20px 20px;
width: 460px;
}
.theForm {
display: none;
background: pink;
padding: 10px;
}
Javascript
$(document).ready(function () {
var theContainer = $('.theContainer'),
theContainerHeight = theContainer.height(),
theForm = $('.theForm'),
theLink = $('.showForm');
theContainer.css({
'height': theContainerHeight + 'px',
'overflow': 'hidden',
'position': 'relative'
});
theForm.css({
'position': 'absolute',
'top': theContainerHeight + 'px'
});
theLink.click(function () {
theForm.css({
'display': 'block'
});
theForm.animate({
'top': '0'
}, 1000);
});
});