2016-11-07 93 views
3

我試圖使我的登錄屏幕的標題和歡迎頁腳緩慢地一起緩解,而不是在淡入輸入表單時一起對齊,這裏是一個jsfiddle我鞭打,以說明我想要做什麼。如何在隱藏影響其定位的其他元素之後移動元素的動畫

https://jsfiddle.net/91ac4g0f/5/

就像我說的,而不是文本卡接在一起,我希望它緩解在一起一旦輸入形式的出路。從小提琴

代碼:

HTML

<div class="flexer"> 
    <h3 class="transition"> 
    Site Name 
    </h3> 
    <div class="seperator"></div> 
    <div id="hide"> 
    <input type="text" placeholder="Username"><br> 
    <input type="password" placeholder="Password"><br> 
    <input type="password" placeholder="Password Confirmation"><br> 
    </div> 
    <h1 class="transition"> 
    Welcome 
    </h1> 
</div> 

CSS

.hideani { 
    animation: fadeout 2s; 
} 

.hide { 
    display: none; 
} 

.flexer { 
    color: white; 
    font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; 
    background: #37474F; 
    height: 300px; 
    display: flex; 
    flex-direction: column; 
    justify-content: center; 
    align-items: center; 
} 

h3, h1 { 
    margin: 5px; 
} 

.seperator { 
    width: 30%; 
    height: 1px; 
    border-bottom: 1px solid rgba(51, 51, 51, 0.3); 
    margin-bottom: 7px; 
} 

h3 { 
    font-weight: 200; 
} 


/* attempt from http://stackoverflow.com/questions/18364938/how-to-animate-elements-move-with-css3-transitions-after-hiding-some-element */ 
// Didn't seem to work 
.transition { 
    -webkit-transition: all .5s ease; 
    -moz-transition: all .5s ease; 
    -o-transition: all .5s ease; 
    transition: all .5s ease; 
} 

@keyframes fadeout { 
    from { opacity: 1; } 
    to { opacity: 0; } 
} 

input { 
    height: 25px; 
    border-radius: 5px; 
    border: none; 
    margin-bottom: 3px; 
    padding: 5px 5px 5px 10px; 
    font-size: 14px; 
    font-weight: 700; 
    background: #333; 
    color: white; 
} 

JS

setTimeout(() => { 
    document.getElementById("hide").className = "hideani"; 
}, 2000) 

setTimeout(() => { 
    document.getElementById("hide").className += " hide"; 
}, 4000); 

回答

0

我更新了你的代碼,並與此想出了:JSFiddle

var siteName = document.getElementById("h3"); 
    var welcome = document.getElementById("h1"); 

setTimeout(() => { 
    document.getElementById("hide").className = "hideani"; 
}, 2000) 

setTimeout(() => { 
    document.getElementById("hide").className += " hide"; 
    siteName.style.top = "113px" 
    welcome.style.top = "147px" 
}, 4000); 

我重新定位你的h1,h3絕對,所以我可以用它top與JS控制它。

0

在做display: none;之前,您可以通過將輸入的不透明度更改爲零opacity: 0.0;兩秒鐘,使登錄屏幕的標題和歡迎頁腳緩慢地一起緩解,以便允許移動發生。

退房小提琴這裏 https://jsfiddle.net/Lwsbh8fp/1/

,這裏是代碼:

setTimeout(() => { 
 
    document.getElementById("hide").className = "hideani"; 
 
}, 2000) 
 

 
setTimeout(() => { 
 
    document.getElementById("a").className += " movea"; 
 
}, 4000); 
 

 
setTimeout(() => { 
 
\t document.getElementById("b").className += " moveb"; 
 
}, 4000); 
 

 
setTimeout(() => { 
 
\t document.getElementById("c").className += " movec"; 
 
}, 4000); 
 

 
setTimeout(() => { 
 
\t document.getElementById("hide").className += " hide"; 
 
}, 4000); 
 

 
setTimeout(() => { 
 
\t document.getElementById("hide").className += " none"; 
 
}, 6000);
.hideani { 
 
    animation: fadeout 2s; 
 
} 
 

 
.none { 
 
    display: none; 
 
} 
 

 
.movea { 
 
    position: relative; 
 
    -webkit-animation-name: examplea; 
 
    -webkit-animation-duration: 2s; 
 
    animation-name: examplea; 
 
    animation-duration: 2s; 
 
} 
 

 
@-webkit-keyframes examplea { 
 
    0% {left:0px; top:0px;} 
 
    100% {left:0px; top:-56px;} 
 
} 
 

 
@keyframes examplea { 
 
    0% {left:0px; top:0px;} 
 
    100% {left:0px; top:-56px;} 
 
} 
 

 
.moveb { 
 
    position: relative; 
 
    -webkit-animation-name: exampleb; 
 
    -webkit-animation-duration: 2s; 
 
    animation-name: exampleb; 
 
    animation-duration: 2s; 
 
} 
 

 
@-webkit-keyframes exampleb { 
 
    0% {left:0px; top:0px;} 
 
    100% {left:0px; top:56px;} 
 
} 
 

 
@keyframes exampleb { 
 
    0% {left:0px; top:0px;} 
 
    100% {left:0px; top:56px;} 
 
} 
 

 
.movec { 
 
    position: relative; 
 
    -webkit-animation-name: examplec; 
 
    -webkit-animation-duration: 2s; 
 
    animation-name: examplec; 
 
    animation-duration: 2s; 
 
} 
 

 
@-webkit-keyframes examplec { 
 
    0% {left:0px; top:0px;} 
 
    100% {left:0px; top:56px;} 
 
} 
 

 
@keyframes examplec { 
 
    0% {left:0px; top:0px;} 
 
    100% {left:0px; top:56px;} 
 
} 
 

 
.hide { 
 
    opacity: 0.0; 
 
} 
 

 
.flexer { 
 
    color: white; 
 
    font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; 
 
    background: #37474F; 
 
    height: 300px; 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: center; 
 
    align-items: center; 
 
} 
 

 
h3, h1 { 
 
    margin: 5px; 
 
} 
 

 
.seperator { 
 
    width: 30%; 
 
    height: 1px; 
 
    border-bottom: 1px solid rgba(51, 51, 51, 0.3); 
 
    margin-bottom: 7px; 
 
} 
 

 
h3 { 
 
    font-weight: 200; 
 
} 
 

 

 
/* attempt from http://stackoverflow.com/questions/18364938/how-to-animate-  elements-move-with-css3-transitions-after-hiding-some-element */ 
 
// Didn't seem to work 
 
.transition { 
 
    -webkit-transition: all .5s ease; 
 
    -moz-transition: all .5s ease; 
 
    -o-transition: all .5s ease; 
 
    transition: all .5s ease; 
 
} 
 

 
@keyframes fadeout { 
 
    from { opacity: 1; } 
 
    to { opacity: 0; } 
 
} 
 

 
input { 
 
    height: 25px; 
 
    border-radius: 5px; 
 
    border: none; 
 
    margin-bottom: 3px; 
 
    padding: 5px 5px 5px 10px; 
 
    font-size: 14px; 
 
    font-weight: 700; 
 
    background: #333; 
 
    color: white; 
 
}
<div class="flexer"> 
 
    <h3 id="b" class="transition"> 
 
    Site Name 
 
    </h3> 
 
    <div id="c" class="seperator"></div> 
 
    <div id="hide"> 
 
    <input type="text" placeholder="Username"><br> 
 
    <input type="password" placeholder="Password"><br> 
 
    <input type="password" placeholder="Password Confirmation"><br> 
 
    </div> 
 
    <h1 id="a" class="transition"> 
 
    Welcome 
 
    </h1> 
 
</div>

0

所有的都那麼好。不過在沒有提height它不會放棄啊效果。 只需加上高度的hide其顯示效果。 Updated Fiddle *

減少hide框的高度動畫應用的forwards效果與隱藏與animation.No端需要使用display:none與隱藏類

#hide { 
    height:120px; 
    overflow:hidden; 
transition:all 1s ease; 
} 

setTimeout(() => { 
 
\t 
 
    document.getElementById("hide").className = "hideani"; 
 
    document.getElementById("hide").style.height = "1px"; 
 
}, 2000)
.hideani { 
 
    
 
    animation: fadeout 0.5s forwards; 
 
} 
 

 
#hide { 
 
    height:120px; 
 
    overflow:hidden; 
 
transition:all 1s ease; 
 
} 
 

 
.flexer { 
 
    color: white; 
 
    font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; 
 
    background: #37474F; 
 
    height: 300px; 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: center; 
 
    align-items: center; 
 
} 
 

 
h3, h1 { 
 
    margin: 5px; 
 
} 
 

 
.seperator { 
 
    width: 30%; 
 
    height: 1px; 
 
    border-bottom: 1px solid rgba(51, 51, 51, 0.3); 
 
    margin-bottom: 7px; 
 
} 
 

 
h3 { 
 
    font-weight: 200; 
 
} 
 

 

 
/* attempt from http://stackoverflow.com/questions/18364938/how-to-animate-elements-move-with-css3-transitions-after-hiding-some-element */ 
 
// Didn't seem to work 
 
.transition { 
 
    -webkit-transition: all .5s ease; 
 
    -moz-transition: all .5s ease; 
 
    -o-transition: all .5s ease; 
 
    transition: all .5s ease; 
 
} 
 

 
@keyframes fadeout { 
 
    from { opacity: 1; } 
 
    to { opacity: 0; } 
 
} 
 

 
input { 
 
    height: 25px; 
 
    border-radius: 5px; 
 
    border: none; 
 
    margin-bottom: 3px; 
 
    padding: 5px 5px 5px 10px; 
 
    font-size: 14px; 
 
    font-weight: 700; 
 
    background: #333; 
 
    color: white; 
 
}
<div class="flexer"> 
 
    <h3 class="transition"> 
 
    Site Name 
 
    </h3> 
 
    <div class="seperator"></div> 
 
    <div id="hide"> 
 
    <input type="text" placeholder="Username"><br> 
 
    <input type="password" placeholder="Password"><br> 
 
    <input type="password" placeholder="Password Confirmation"><br> 
 
    </div> 
 
    <h1 class="transition"> 
 
    Welcome 
 
    </h1> 
 
</div>

相關問題