我真的需要你的帮助。我正在创建一个像这样的页面转换: http://goo.gl/74K2rQ
但我正在按照我的OWN设计动画:http://goo.gl/NVjcZ2
到目前为止,我所尝试的是什么:https://jsfiddle.net/f7xpe0fo/1/
它还没有遵循我的设计。要查看我的实际JSFIDDLE,请在此处查看: https://jsfiddle.net/8y801eqh/11/
我的HTML包含的是我用ID的主页和下一页创建了两个div。第一页为红色,下一页为绿色。默认情况下,我隐藏下一页div。看看我的HTML:
<div id="main-page">
<div>
<h1>Page Transition</h1>
<a href="#"> Click Here</a>
</div>
</div>
<div id="next-page">
<div>
<h1>This is the 2nd page</h1>
<a href="#"> Click Here</a>
</div>
</div>
现在我的CSS我修改了他们的设计以匹配整个页面:
#main-page {
height: 50vh;
width: 100%;
position: fixed;
left: 0;
background-color: #e74c3c;
padding: 40px 0 40px 0;
}
h1{
font-family: Helvetica;
color: #fff;
font-weight: normal;
text-align: center;
}
#next-page{
height: 50vh;
width: 100%;
position: fixed;
left: 0;
background-color: #27ae60;
padding: 40px 0 40px 0;
display: none;
}
a{
font-family: Helvetica;
color: #fff;
border: 2px solid #fff;
padding: 10px 15px;
display: block;
text-align: center;
margin: 0 auto;
width: 20%;
text-decoration: none;
}
根据我在此处的实验:https://jsfiddle.net/f7xpe0fo/1/
当我点击这个单词时点击这里是一个链接,它必须将页面包装到下一页并完全遵循这个设计:http://goo.gl/NVjcZ2
我试图转换动画的第一阶段,但我不知道如何进行下一阶段。我知道我需要在这个上使用jQuery,但我该怎么办?任何人都可以提供帮助。
这是我自己的JSFIDDLE:https://jsfiddle.net/8y801eqh/11/
答案 0 :(得分:3)
所以找到了你的解决方案,请在此处查看:http://transitiontest.comeze.com/
test1 =半页,test2 =整页,test3 =单页
在此示例中,有两个主要对象:#main-page
和#next-page
,除了背景颜色外,它们共享相同的默认属性:`
height: 25px;
width: 375px;
position: absolute;
top: 0; bottom: 0; left: 0; right: 0;
margin: auto;
background-color: #27ae60;
display: none;
我使用position: absolute;
和边距来居中对象。要隐藏它,我将display
设置为none;
。
在页面加载时,我首先重置主对象的所有属性并将其淡入,如下所示。
当点击.linkmain
或.linknext
时,它们都执行相同的功能,但是对于不同的对象(主要或下一个)。
该函数首先淡出主对象中的文本并使该对象缩小。完成这两个操作后,对象将使用函数旋转以转换旋转。
完成所有这些操作后,该功能淡出对象点击,以显示新对象。
下一步,显示新对象:
同样,首先我重置对象的所有属性并使其淡入。
接下来,我更改与新对象之一匹配的对象的背景颜色。
完成此操作后,我会为高度设置动画,然后设置宽度,最后淡化新对象的内容。
<强> JS 强>
// This function is used to transition rotation
$.fn.animateRotate = function(angle, duration, easing, complete) {
var args = $.speed(duration, easing, complete);
var step = args.step;
return this.each(function(i, e) {
args.complete = $.proxy(args.complete, e);
args.step = function(now) {
$.style(e, 'transform', 'rotate(' + now + 'deg)');
if (step) return step.apply(e, arguments);
};
$({deg: 0}).animate({deg: angle}, args);
});
};
// Set all properties of main object to default and fade it in
$("#main-page").css("background-color", "#e74c3c");
$("#main-page").css("height", "100vh");
$("#main-page").css("width", "100%");
$("#main-page").fadeIn();
$(".maincontent").fadeIn();
// This gets activated once clicked on object .linkmain
$(".linkmain").on("click", function() {
$(".maincontent").fadeOut();
$("#main-page").animate({
width: "25px",
height: "375px"
}, function() {
$(this).animateRotate(90);
});
// Hide the main object after all the animations above are finished
setTimeout(function() {
$("#main-page").fadeOut();
}, 1500);
// Fade in the new page after all the animations above are finished
setTimeout(function() {
$("#next-page").animateRotate(0, 0);
$("#next-page").css("height", "25px");
$("#next-page").css("width", "375px");
$("#next-page").fadeIn();
$("#next-page").animate({
backgroundColor: "#27ae60"
}, function() {
$(this).animate({
height: "100vh"
}, function() {
$(this).animate({
width: $("body").width()
}, function() {
$(".nextcontent").fadeIn(300);
});
});
});
}, 800);
});
// This gets activated once clicked on object .linknext
$(".linknext").on("click", function() {
$(".nextcontent").fadeOut();
$("#next-page").animate({
width: "25px",
height: "375px"
}, function() {
$(this).animateRotate(-90);
});
// Hide the next object after all the animations above are finished
setTimeout(function() {
$("#next-page").fadeOut();
}, 1500);
// Fade in the main page after all the animations above are finished
setTimeout(function() {
$("#main-page").animateRotate(0, 0);
$("#main-page").css("height", "25px");
$("#main-page").css("width", "375px");
$("#main-page").fadeIn();
$("#main-page").animate({
height: "100vh"
}, function() {
$(this).animate({
width: $("body").width()
}, function() {
$(".maincontent").fadeIn(300);
});
});
}, 1400);
});
答案 1 :(得分:0)
基本概念:
<script type='text/javascript' >
$(document).ready(function(){
$('#id1').click(function(){
$(this).replaceWith("<?php echo $_coupon; ?>");
});
});
</script>
函数中得到服务器的响应时,从响应中提取主div的内容,将其替换为当前内容并播放第二个动画。您可以通过设置类的属性然后通过addclass函数将其添加到div来播放动画。
但是,当不同的页面使用不同的js脚本时可能会出现问题。
还有一些脚本可以自动化这些东西,但我不熟悉任何东西,遗憾的是。
答案 2 :(得分:0)
这不是实际答案,但可能此代码对您有所帮助:
$('.clickbutton').click(function(){
$('.mainWrap').addClass('animate');
setTimeout(function() {
/* Code to show the page , now this is dummy code*/
$('#main-page, #next-page').toggle();
}, 500);
setTimeout(function() {
$('.mainWrap').removeClass('animate');
}, 1000);
});
&#13;
#main-page {
height: 100%;
width: 100%;
background-color: #e74c3c;
padding: 40px 0 40px 0;
}
h1{
font-family: Helvetica;
color: #fff;
font-weight: normal;
text-align: center;
}
#next-page{
height: 100%;
width: 100%;
background-color: #27ae60;
padding: 40px 0 40px 0;
display:none;
}
a{
font-family: Helvetica;
color: #fff;
border: 2px solid #fff;
padding: 10px 15px;
display: block;
text-align: center;
margin: 0 auto;
width: 20%;
text-decoration: none;
}
.mainWrap:before, .mainWrap:after {
background-color:yellow;
display: block;
content: '';
height: 50vh;
width: 100%;
position: fixed;
left: 0;
z-index: 2;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
-webkit-transition: -webkit-transform 0.4s 0.4s;
-moz-transition: -moz-transform 0.4s 0.4s;
transition: transform 0.4s 0.4s;
}
.animate.mainWrap:before, .animate.mainWrap:after
{
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
-webkit-transition: -webkit-transform 0.4s 0s;
-moz-transition: -moz-transform 0.4s 0s;
transition: transform 0.4s 0s;
}
.mainWrap::before {
top: -2px;
-webkit-transform: translateY(-100%);
-moz-transform: translateY(-100%);
-ms-transform: translateY(-100%);
-o-transform: translateY(-100%);
transform: translateY(-100%);
}
.mainWrap::after {
bottom: -2px;
-webkit-transform: translateY(100%);
-moz-transform: translateY(100%);
-ms-transform: translateY(100%);
-o-transform: translateY(100%);
transform: translateY(100%);
}
*, *::after, *::before {
box-sizing: border-box;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mainWrap">
<div id="main-page">
<div>
<h1>Page Transition</h1>
<a class="clickbutton" href="javascript:void(0)"> Click Here</a>
</div>
</div>
<div id="next-page">
<div>
<h1>This is the 2nd page</h1>
<a class="clickbutton" href="javascript:void(0)"> Click Here</a>
</div>
</div>
</div>
&#13;
在小提琴中添加:Demo
答案 3 :(得分:0)
<强> jsBin demo 强>
HTML:
<div class="page" id="page1">
<h1>PAGE 1</h1>
<a href="#">Click here</a>
</div>
<div class="page" id="page2">
<h1>PAGE 2</h1>
<a href="#">Click here</a>
</div>
<div id="overlay"></div> <!-- we'll animate this guy here -->
CSS:
h1{
font: 60px/2 Helvetica;
color: #fff;
font-weight: normal;
text-align: center;
}
.page{
position: absolute;
overflow: hidden;
width: 90vw;
height: 90vh;
top: 5vh;
left: 5vw;
color: white;
}
#page1{
background: #008562;
}
#page2{
display: none;
background: #ff8600;
}
.page a{
font-family: Helvetica;
color: #fff;
border: 2px solid #fff;
padding: 10px 15px;
display: block;
text-align: center;
margin: 0 auto;
width: 20%;
text-decoration: none;
}
#overlay{
visibility: hidden;
position: fixed;
z-index:999;
width: 100vw;
height: 100vh;
box-shadow: 0 0 0 2000px #fff;
}
#overlay.overlayAnimation{
visibility: visible;
animation: overlayAnimation 4s forwards;
}
@keyframes overlayAnimation {
0% {
width: 100vw;
height: 100vh;
transform: translate3d(0px, 0px, 0);
background: transparent;
}
25%{
width: 10px;
height: 200px;
transform: translate3d(calc(50vw - 5px), calc(50vh - 100px), 0);
}
50%{
width: 10px;
height: 200px;
transform: translate3d(calc(50vw - 5px), calc(50vh - 100px), 0) rotate(90deg);
}
50.1%{
width: 200px;
height: 10px;
transform: translate3d(calc(50vw - 100px), calc(50vh - 5px), 0) rotate(0deg);
}
75%{
width: 200px;
height: 100vh;
transform: translate3d(calc(50vw - 100px), 0px, 0) rotate(0deg);
}
100%{
width: 100vw;
height: 100vh;
transform: translate3d(0px, 0px, 0) rotate(0deg);
visibility:hidden;
}
}
还有一些jQuery来触发CSS3 overlayAnimation类:
var $pages = $(".page");
var $overlay = $("#overlay");
$('.page a').on("click", function(){
if($overlay.hasClass("overlayAnimation")) return;
$pages.fadeToggle(4000);
$overlay.addClass("overlayAnimation").on("animationend", function(){
$(this).removeClass("overlayAnimation");
});
});