JavaScript - ajouter des transition entre display:none et display:block
Je suis à l'aide de JavaScript pour basculer de notification comme ci-dessous.
Comment puis-je ajouter de la transition entre display: block
et display: none;
Je ne veux pas ajouter une bibliothèque externe comme jQuery parce que je ne vais qu'à l'aide de la toggle
effet seul.
JS:
var btn = document.querySelector('button');
btn.addEventListener('click', function(){
var hint = document.getElementById('hint');
if(hint.style.display == 'none'){
hint.style.display = 'block';
}
else{
hint.style.display = 'none';
}
});
CSS:
div#hint{
background: gold;
color: orangered;
padding: .5em;
font-weight: bold;
}
HTML:
<div id='hint'>
<p>This is some hint on how to be safe in this community </p>
<p>This is another hint on how to be safe in this community </p>
</div>
<button> show hint </button>
Je sais que je peux utiliser jQuery pour réaliser ce comme ci-dessous.
JS:
$(document).ready(function(){
$('button').click(function(){
$('#hint').toggle('slow');
});
});
CSS:
div#hint{
background: gold;
color: orangered;
padding: .5em;
font-weight: bold;
}
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='hint'>
<p>This is some hint on how to be safe in this community </p>
<p>This is another hint on how to be safe in this community </p>
</div>
<button> show hint </button>
Puis-je faire sur le bouton monte et descend progressivement pendant le #hint
est en train de basculer, comme dans le jQuery exemple ci-dessus? Je ne veux pas le bouton pour sauter d'une position à une autre.
Vous devez vous connecter pour publier un commentaire.
voir mon exemple ci-dessous:
JS:
CSS:
HTML:
@vothaison suggestion: les transitions CSS
Techniquement, @vothaison voulu utiliser
setInterval
par opposition àsetTimeout
, mais je ne vois pas le besoin. C'est juste plus de travail.JS:
CSS:
HTML:
À l'aide de CSS animations
JS:
CSS:
HTML:
L'aide de vanille JavaScript
Il y a plusieurs façons de faire ce genre de chose avec de la vanille JavaScript, donc voici un croquis rapide d'une seule façon:
JS:
CSS:
HTML:
Dire ce que vous voulez à propos de GreenSock, Velocity.js, jQuery, etc — ils ont tous tendance à banaliser ce processus de montrer et de cacher des choses. Pourquoi ne pas simplement emprunter de l'afficher et de masquer les fonctions de jQuery code source?
#hint
est en train de basculer?. Pouvez-vous m'aider à mettre cela en œuvre. Je ne veux pas le bouton saut à partir d'une position à une autre, comme dans la réponse que vous avez fournie.height
plutôt que d'utilisertransform: scale(x)
comme je l'ai fait dans les exemples.Sans l'aide de css3 transition, vous pouvez utiliser js setInterval pour modifier certaines propriétés css de la div, tels que:
Modifier l'opacité de 0 à 1
Changer la hauteur de 0 à pleine hauteur
Modifier la largeur de 0 à pleine largeur
D'abord, vous devriez avoir
display: none; opacity: 0; height: 0; width: 0'
Alors vous devez changer
display: none
àdisplay: block;
avant d'utiliser setInterval pour modifier d'autres propriétés.(Je suppose que vous savez comment faire pour cacher la div)
Vous pouvez également utiliser setTimeout(), avec un truc de récursive.
JS:
CSS:
HTML:
Je pense que l'utilisation de la visibilité sur l'affichage est une meilleure option
Essayer quelque chose comme cela:
JS:
CSS:
HTML:
Salut je n'ai pas utiliser display: block à display:none mais changer l'opacité, de la hauteur et de remplissage au lieu
veuillez consulter celui-ci:
JS:
CSS:
HTML:
l'inconvénient de cette approche est que nous devons maintenir des voies de la div#astuce de la hauteur et de le modifier à l'aide de javascript, si nécessaire.
J'ai aussi essayé de faire cette
veuillez regarder si elle peut vous aider à
display
de la propriété.