用html的两面翻转div

时间:2012-01-30 02:48:14

标签: jquery css css3 rotation css-animations

我正在建立的网站上有一个登录表单,而且我还有一个注册表单。当点击“注册”链接时,我想通过将div旋转到另一侧来添加一些奇特的动画。我希望登录表单位于正面,注册表单位于背面。我宁愿不使用javascript,但如果有必要,我会。

感谢任何可能的答案!

5 个答案:

答案 0 :(得分:17)

除了通过添加类触发动画外,您可以使用CSS transitiontransform: rotateY()进行动画而不使用Javascript。

演示:http://jsfiddle.net/ThinkingStiff/9UMFg/

CSS:

.flip {
    backface-visibility: hidden;
    border: 1px solid black;
    height: 150px;
    position: absolute;
    transform-origin: 50% 50% 0px;
    transition: all 3s;
    width: 300px;    
}

#side-1 {
    transform: rotateY( 0deg );
}

#side-2 {
    transform: rotateY( 180deg );   
}

.flip-side-1 {    
    transform: rotateY( 0deg ) !important;
}

.flip-side-2 {
    transform: rotateY( 180deg ) !important;
}

HTML:

<form id="side-1" class="flip">
    <div>login</div>
    <input id="username" placeholder="enter username" />
    <input id="password" placeholder="enter password" />
    <a id="login" href="#">login</a>
    <a id="signup" href="#">sign up</a>
</form>
<form id="side-2" class="flip">
    <div>signup</div>
    <input id="new-username" placeholder="enter username" />
    <input id="new-password" placeholder="enter password" />
    <input id="new-re-password" placeholder="re-enter password" />
    <a id="create" href="#">create</a>
</form>

脚本:

document.getElementById( 'signup' ).addEventListener( 'click', function( event ) {

    event.preventDefault();
    document.getElementById( 'side-2' ).className = 'flip flip-side-1';
    document.getElementById( 'side-1' ).className = 'flip flip-side-2';

}, false );

答案 1 :(得分:2)

我现在没有时间编写任何代码,但有些指针可能有所帮助;

1)你需要使用JavaScript,结合CSS,可能还有像jQuery这样的框架,没有必要重新发明轮子,jQuery已经内置了很棒的动画内容。

2)将动画分解为实际发生的阶段。粗略地说,阴影出现,给人的印象是表格从页面上抬起,内容淡化,表格宽度动画为0,然后是新内容淡入的反向过程。

3)已经有很多优秀的DOM操作效果,搜索很酷的jquery内容切换等,你会发现很多。

答案 2 :(得分:1)

我制作了一个你可能会使用的翻页菜单,它在首次加载时有点小故障,但我确信它有点小......

访问jsfiddle

CSS:

.switch-selection
{
display: block;
position: absolute;
z-index: 1;
top: 2px;
left: 2px;
width: 130px;
height: 22px;
background: #fbfbfb;
border-radius: 3px;
-webkit-box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 0 2px rgba(0, 0, 0, 0.2);
-webkit-transition: left 0.15s ease-out;
-moz-transition: left 0.15s ease-out;
-o-transition: left 0.15s ease-out;
transition: left 0.15s ease-out;
-moz-border-radius: 3px; /* Firefox */
-webkit-border-radius: 3px; /* Safari, Chrome */
-khtml-border-radius: 3px; /* KHTML */
border-radius: 3px; /* CSS3 */
}

答案 3 :(得分:0)

制作动画的唯一方法就是操纵DOM。如果不使用javascript,我无法想到这么多。

使用纯HTML,您可以为DIV A和B构建一个相同的模板,然后在两者之间进行POST更改,但这不会使华而不实的动画像您想要的那样。

答案 4 :(得分:0)

要使解决方案适用于所有浏览器,请参阅here。  原则是。 - 将一个div放在另一个div上。 - 在div上旋转,让它面向后方。 - 并在悬停时旋转两个div以使其转动页面的效果。