我在当前正在构建的网站上有一个登录表单,我也有一个注册表单。当单击“注册”链接时,我想通过将 div 旋转到另一侧来添加一些精美的动画。我希望登录表单位于正面,而注册表单位于背面。我宁愿不使用 javascript,但如果有必要,我会。
感谢您提供任何可能的答案!
我在当前正在构建的网站上有一个登录表单,我也有一个注册表单。当单击“注册”链接时,我想通过将 div 旋转到另一侧来添加一些精美的动画。我希望登录表单位于正面,而注册表单位于背面。我宁愿不使用 javascript,但如果有必要,我会。
感谢您提供任何可能的答案!
除了通过添加类来触发动画之外,您可以使用 CSStransition
而无需 Javascript 来制作动画。transform: rotateY()
演示: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)你需要使用JavaScript,结合CSS,可能还有像jQuery这样的框架,没有必要重新发明轮子,jQuery已经内置了优秀的动画东西。
2) 将动画分解为实际发生的阶段。所以粗略地,阴影出现了,给人的印象是表单从页面上移开,内容淡出,表单宽度动画为 0,然后是新内容淡入的相反过程。
3)已经有很多优秀的DOM操作效果,搜索酷炫的jquery内容切换等,你会发现很多。
我做了一个你可能可以使用的翻转菜单,它在第一次加载时有点小故障,但我相信它是小问题..
访问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 */
}
制作您所描述的动画的唯一方法是操作 DOM。如果不使用 javascript,我想不出很多方法来做到这一点。
使用纯 HTML,您可以为 DIV A 和 B 构建一个相同的模板,然后在两者之间进行 POST 更改,但这不会使华丽的动画像您想要的那样。
有关适用于所有浏览器的解决方案,请参见此处。原则是。- 将一个 div 放在另一个上。- 在 div 上旋转,使其朝后。- 并在悬停时旋转两个 div,使其具有翻页的效果。