web-dev-qa-db-fra.com

CSS comment faire fondre un élément puis le faire disparaître?

Je peux créer un élément avec une opacité égale à zéro en fondant sa classe en .elementToFadeInAndOut avec le css suivant:

.elementToFadeInAndOut {
    opacity: 1;
    transition: opacity 2s linear;
}

Existe-t-il un moyen de faire disparaître l'élément après l'avoir intégré en modifiant le css de cette même classe?

Merci beaucoup pour votre temps.

36
user95227

Utilisez css @ images clés

.elementToFadeInAndOut {
    opacity: 1;
    animation: fade 2s linear;
}


@keyframes fade {
  0%,100% { opacity: 0 }
  50% { opacity: 1 }
}

voici une démo

.elementToFadeInAndOut {
    width:200px;
    height: 200px;
    background: red;
    -webkit-animation: fadeinout 4s linear forwards;
    animation: fadeinout 4s linear forwards;
}

@-webkit-keyframes fadeinout {
  0%,100% { opacity: 0; }
  50% { opacity: 1; }
}

@keyframes fadeinout {
  0%,100% { opacity: 0; }
  50% { opacity: 1; }
}
<div class=elementToFadeInAndOut></div>

Lecture: en utilisant des animations CSS

Vous pouvez nettoyer le code en procédant comme suit:

.elementToFadeInAndOut {
    width:200px;
    height: 200px;
    background: red;
    -webkit-animation: fadeinout 4s linear forwards;
    animation: fadeinout 4s linear forwards;
    opacity: 0;
}

@-webkit-keyframes fadeinout {
  50% { opacity: 1; }
}

@keyframes fadeinout {
  50% { opacity: 1; }
}
<div class=elementToFadeInAndOut></div>
83
Gildas.Tambo

Si vous avez besoin d'un seul fadeIn/Out sans action utilisateur explicite (comme un mouseover/mouseout), vous pouvez utiliser un fichier CSS3 animation: http://codepen.io/anon/pen/bdEpwW =

.elementToFadeInAndOut {
    -webkit-animation: fadeinout 4s linear 1 forwards;
    animation: fadeinout 4s linear 1 forwards;
}

@-webkit-keyframes fadeinout {
  0% { opacity: 0; }
  50% { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes fadeinout {
  0% { opacity: 0; }
  50% { opacity: 1; }
  100% { opacity: 0; }
}

En définissant animation-fill-mode: forwards, l'animation conservera sa dernière image clé.

En réglant animation-iteration-count: 1, l'animation ne s'exécute qu'une fois (modifiez cette valeur si vous devez répéter l'effet plusieurs fois).

11
fcalderan

J'ai trouvé ce lien utile: css-tricks fade-in fade-out css .

Voici un résumé du post de csstricks:

Classes CSS:

.m-fadeOut {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s linear 300ms, opacity 300ms;
}
.m-fadeIn {
  visibility: visible;
  opacity: 1;
  transition: visibility 0s linear 0s, opacity 300ms;
}

En réaction:

toggle(){
    if(true condition){
        this.setState({toggleClass: "m-fadeIn"});
    }else{
        this.setState({toggleClass: "m-fadeOut"});
    }
}

render(){
    return (<div className={this.state.toggleClass}>Element to be toggled</div>)
}
3
raksheetbhat