Pouvez-vous faire quelque chose comme
function showDiv()
{
[DIV].visible = true;
//or something
}
Pouvez-vous faire quelque chose comme
function showDiv()
{
[DIV].visible = true;
//or something
}
visibility
a pour effet secondaire que l'espace occupé par l'élément reste réservé. Ce n'est pas forcément ce que souhaite le PO.
Supposons que vous n'utilisiez pas une bibliothèque telle que jQuery.
Si vous n'avez pas encore de référence à l'élément DOM, obtenez-en une en utilisant la fonction var elem = document.getElementById('id');
Vous pouvez ensuite définir n'importe quelle propriété CSS de cet élément. Pour afficher/masquer, vous pouvez utiliser deux propriétés : display
et visibility
qui ont des effets légèrement différents :
Réglage de style.display
donnera l'impression que l'élément n'est pas présent du tout ("supprimé").
elem.style.display = 'none'; // hide
elem.style.display = 'block'; // show - use this for block elements (div, p)
elem.style.display = 'inline'; // show - use this for inline elements (span, a)
ou style.visibility
fera en sorte que le div soit toujours là, mais soit "tout vide" ou "tout blanc".
elem.style.visibility = 'hidden'; // hide, but lets the element keep its size
elem.style.visibility = 'visible';
Si vous utilisez jQuery, vous pouvez le faire encore plus facilement, à condition de définir l'attribut display
propriété :
$(elem).hide();
$(elem).show();
Il utilisera automatiquement l'option display
vous n'avez pas à vous soucier du type d'élément (inline ou block). De plus, elem
peut être non seulement un élément du DOM mais aussi un sélecteur tel que #id
ou .class
ou tout ce qui est valide en CSS3 (et plus encore !).
Je préfère votre réponse mais je pense qu'il y a une petite correction : vous devez utiliser elem.style.display='none' ;
Vous pouvez utiliser visibility
ou display
mais vous devez appliquer les changements à la div.style
et non l'objet div
l'objet lui-même.
var div = document.getElementById('div_id');
// hide
div.style.visibility = 'hidden';
// OR
div.style.display = 'none';
// show
div.style.visibility = 'visible';
// OR
div.style.display = 'block';
Vous pouvez utiliser les fonctions DOM : setAttribute et removeAttribute. Dans le lien suivant vous avez un exemple de comment les utiliser.
Fonctions setAttribute et removeAttribute
Une vue rapide :
hide: document.getElementById("myDiv").setAttribute("hidden","");
unhide: document.getElementById("myDiv").removeAttribute("hidden");
Vous pouvez utiliser opacity
qui est similaire à visibility
mais permet de lisser la transition et de contrôler d'autres paramètres comme la hauteur (pour la simplicité de l'extrait, je mets la logique js dans le html directement - ne le faites pas dans le code de production).
.box { width:150px; height: 150px; background: red; transition: 0.5s }
.hide { opacity: 0; height: 10px}
<div id="box" class="box"></div>
<button onclick="box.classList.toggle('hide')">Toggle</button>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Pourquoi ne pas simplement utiliser Jquery ? .hide() ?
9 votes
@JackStone : Non, c'est seulement si vous utilisez déjà la bibliothèque jQuery. Certaines personnes aiment juste en faire la promotion à chaque question sur le JavaScript. Même si vous l'étiez,
.hide()
ne définit pas la visibilité. Il définit l'affichage.10 votes
Je ne suis pas je suis vous avez clairement échoué à comprendre que jQuery est vraiment génial et fait tout. (Source de l'image)
9 votes
Pour quelque chose comme ça, une bonne réponse devrait contenir à la fois une solution JS simple et une solution montrant l'utilisation de l'algorithme de l'utilisateur. avantage de l'utilisation d'une bibliothèque - dans ce cas, ne pas avoir à s'occuper de en ligne ou en bloc lors de l'utilisation de
display
pour afficher un élément.