2014-02-24 4 views
26

페이지가로드 된 후 5 초 후에 요소를 숨길 수 있습니까? a jQuery solution이 있다는 것을 알고 있습니다.CSS 5 초 후 요소 자동 숨기기

나는 똑같은 일을하고 싶지만 CSS 전환으로 같은 결과를 얻기를 바란다.

혁신적인 아이디어가 있습니까? 또는 CSS 전환/애니메이션의 한계를 넘어서 묻는 것입니까?

+0

가능하지만 그렇게하지 않는 것이 좋습니다. 그것을 위해 jQuery 나 pure JS를 사용하십시오. –

+1

여기 예가 있습니다 : http://jsbin.com/xofaq/1/edit?html,css,output 이미 답변이 있습니다.하지만 잘하고 있었고 아이들이 저를 멀리 데려갔습니다. – balexandre

+0

고맙습니다. @ balexandre, +1. – Alfred

답변

49

예!

하지만 애니메이션 또는 다른에 의존하려는 속성 주위에 전환 생성 (예 : display 또는 변경 차원을하고 overflow:hidden로 설정) 어차피 때문에, 당신은 즉시 생각할 수있는 방법으로 그것을 할 수있는 요소를 정확하게 숨기고 가시적 인 공간을 차지하지 못하게하십시오.

따라서 문제의 요소에 대한 애니메이션을 만들고 5 초 후에 visibility:hidden;을 간단히 전환하고 높이와 너비를 0으로 설정하여 요소가 DOM 흐름에서 여전히 공간을 차지하지 않도록합니다.

FIDDLE

CSS

html, body { 
    height:100%; 
    width:100%; 
    margin:0; 
    padding:0; 
} 
#hideMe { 
    -moz-animation: cssAnimation 0s ease-in 5s forwards; 
    /* Firefox */ 
    -webkit-animation: cssAnimation 0s ease-in 5s forwards; 
    /* Safari and Chrome */ 
    -o-animation: cssAnimation 0s ease-in 5s forwards; 
    /* Opera */ 
    animation: cssAnimation 0s ease-in 5s forwards; 
    -webkit-animation-fill-mode: forwards; 
    animation-fill-mode: forwards; 
} 
@keyframes cssAnimation { 
    to { 
     width:0; 
     height:0; 
     overflow:hidden; 
    } 
} 
@-webkit-keyframes cssAnimation { 
    to { 
     width:0; 
     height:0; 
     visibility:hidden; 
    } 
} 

HTML 물론

<div id='hideMe'>Wait for it...</div> 
+0

니스! 방금 키 프레임을 추천하려고했습니다. +1! – Albzi

+0

왜 불투명도를 애니메이트하지 않습니까? 'opacity : 1' to 0 – Radian

+0

작동하지만 질문에 대답이 있습니다. @keyframe과 @ -webkit-keyframes 만 포함되었으므로 -moz 및 -o 없이도 괜찮은지 궁금합니다. 그냥 또 다른 질문입니다. 그리고 나는 그것이 단지 5 초를 기다리고 애니메이션없이 즉시 요소를 숨긴다는 것을 알았습니다. 나는 당신이 당신의 대답에 페이드 아웃 전환 부분을 포함시키는 것이 좋을 것이라고 생각합니다. – Alfred

4

당신이 바로 전환을 트리거하는 클래스 또는 무언가를 변경하는 setTimeout를 사용할 수 있습니다.

HTML :

<p id="aap">OHAI!</p> 

CSS :

p { 
    opacity:1; 
    transition:opacity 500ms; 
} 
p.waa { 
    opacity:0; 
} 

JS 부하 또는 DOMContentReady에서 실행 :

setTimeout(function(){ 
    document.getElementById('aap').className = 'waa'; 
}, 5000); 

Example fiddle here.

+0

답변 해 주셔서 감사합니다. 그러나 자바 스크립트를 전혀 사용하지 않으려 고합니다. javascript 또는 jQuery를 사용하고 싶다면 내 질문에 포함 된 jQuery 솔루션을 사용할 수 있습니다. 어쨌든 고마워. – Alfred

+3

[jQuery는 원격으로 자바 스크립트의 동의어가 아닙니다] (http://meta.stackexchange.com/a/19492/219504). 당신은 jQuery에 내장 된 변환을 사용하지 않는 솔루션을 요청했고 순수한 CSS 전환과 일반적인 Javascript 한 줄로 답변을 해주었습니다. 당신은 JS가없는 솔루션을 요구하지 않았기 때문에 대답은 완성되었습니다. –

+0

사람들이 jQuery! = JS – msaad

0

왜 시도하지 마시오 fadeOut?

페이드 아웃 (순수 자바 스크립트)

$(document).ready(function() { 
 
    $('#plsme').fadeOut(5000); // 5 seconds x 1000 milisec = 5000 milisec 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div id='plsme'>Loading... Please Wait</div>

는 : @ SW4의 대답에서 기반

How to make fadeOut effect with pure JavaScript

+1

질문은 CSS가 아니라 JavaScript 사용에 관한 것입니다! – Mushfiq

1

, 당신은 또한 마지막에 약간의 애니메이션을 추가 할 수 있습니다. 나머지 0.5 초 만들기

body > div{ 
 
    border:1px solid grey; 
 
} 
 
html, body, #container { 
 
    height:100%; 
 
    width:100%; 
 
    margin:0; 
 
    padding:0; 
 
} 
 
#container { 
 
    overflow:hidden; 
 
    position:relative; 
 
} 
 
#hideMe { 
 
    -webkit-animation: cssAnimation 5s forwards; 
 
    animation: cssAnimation 5s forwards; 
 
} 
 
@keyframes cssAnimation { 
 
    0% {opacity: 1;} 
 
    90% {opacity: 1;} 
 
    100% {opacity: 0;} 
 
} 
 
@-webkit-keyframes cssAnimation { 
 
    0% {opacity: 1;} 
 
    90% {opacity: 1;} 
 
    100% {opacity: 0;} 
 
}
<div> 
 
<div id='container'> 
 
    <div id='hideMe'>Wait for it...</div> 
 
</div> 
 
</div>

불투명도 속성을 애니메이션화. 길이를 바꾸는 경우 수학 계산을해야합니다.이 경우 5 초의 90 %는 0.5 초 동안 불투명도를 애니메이트합니다.

+0

나는이 해결책을 좋아한다. 거기에 그렇게 결합하여 페이드 아웃 한 다음 DOM에서 그것을 제거하는 방법이 있습니까? –

관련 문제