是否有可能使用 CSS3(也许还有 jQuery)来实现这种效果?我尝试了通常的'slideDown'效果,但它甚至没有接近这个。有任何想法吗?
3 回答
你可以用 CSS 过渡来做到这一点..
这个概念是有一个带有height:0
and的元素overflow:hidden
(让我们将其命名为 paper-holder),并在其内部有一个绝对定位的元素在底部(withbottom:0
)(paper)
这样,当您将纸架元素的高度从 0 过渡到纸的高度时,纸似乎正在滑出。
演示在 http://jsfiddle.net/9FfKZ/1/
更新
使打印步骤更明显的改进是使用steps
(文档)计时功能而不是我最初演示的线性
我的想法之一是拥有 3 种不同的元素。暂时忘记这张纸。只考虑打印机插槽。我会把它做成两个单独的图像。上半部有下半部。这两个图像应该在您希望纸张送入的位置相遇。绝对定位这两个图像,使它们看起来正常连接。
这里的诀窍在于z-index
您希望上半部分的 z-index 高于下半部分,本质上使其在 z 轴上“更接近用户”。使顶部有一个z-index:9999;
,下半部分有一个z-index:9995;
现在,您将要创建一个代表论文的 div。给那个 div 一个 z-index: 在顶部和底部图形之间的某个地方,所以给它一个z-index:9997;
. 将它绝对定位在顶部图形的后面,然后慢慢地向下动画直到它的终点。
工作演示:http: //jsfiddle.net/XzVA9/2/
HTML
<img id="top" src="http://s1.postimage.org/txsnx2v9r/imgtop.png" />
<div id="paper">Receipt</div>
<img id="bottom" src="http://s1.postimage.org/3o7lea9cf/imgbot.png" />
CSS
#top{
position:absolute;
top:0;
left:0;
z-index:9999;
}
#bottom{
position:absolute;
top:284px;
left:0;
z-index:9995;
}
#paper{
position:absolute;
top:204px;
left:250px;
z-index:9997;
width:300px;
height:50px;
line-height:50px;
padding:15px 0;
background:#fff;
border:1px solid #999;
text-align:center;
font-weight:bold;
font-size:22pt;
-webkit-box-shadow: 0 8px 6px -6px black;
-moz-box-shadow: 0 8px 6px -6px black;
box-shadow: 0 8px 6px -6px black;
}
JS
$('#paper').animate({'top':'284px'}, 3000);
在 javascript 中使用 setInterval 每 x 毫秒设置一次位置,以创建抖动效果。确保您有适当的 CSS 来完成这项工作,即。在正确的元素上定位绝对/相对
var offset_y = 0,
slide_interval = setInterval(function() {
$('#element').css({
left : 0,
top : offset_y
});
offset_y += 2;
if(offset_y > 1000) // Desired Value Here
clearInterval(slide_interval);
});