Est-il possible de vérifier si le CSS d'un élément display == blockou en noneutilisant JavaScript?
Réponses:
Comme sdleihssirhc le dit ci-dessous, si l'élément displayest hérité ou spécifié par une règle CSS, vous devrez obtenir son style calculé :
return getComputedStyle(element, null).display;
Les éléments ont une stylepropriété qui vous dira ce que vous voulez, si le style a été déclaré en ligne ou avec JavaScript:
console.log(document.getElementById('someIDThatExists').style.display);
vous donnera une valeur de chaîne.
currentStyle? document.body.currentStyleje n'en ai jamais entendu parler, a également vérifié et n'a rien obtenu (n'était pas surpris)
Si le style a été déclaré en ligne ou avec JavaScript, vous pouvez simplement accéder à l' styleobjet:
return element.style.display === 'block';
Sinon, vous devrez obtenir le style calculé et il y a des incohérences dans le navigateur. IE utilise un currentStyleobjet simple , mais tout le monde utilise une méthode:
return element.currentStyle ? element.currentStyle.display :
getComputedStyle(element, null).display;
Le nullétait requis dans Firefox version 3 et inférieure.
===et les !==opérateurs».
===plutôt ==qu'ici, mais il n'y a pas non plus d'avantage. Il est garanti que les deux opérandes sont des chaînes, de sorte que les deux opérateurs effectuent exactement les mêmes étapes.
Pour jQuery, voulez-vous dire comme ça?
$('#object').css('display');
Vous pouvez le vérifier comme ceci:
if($('#object').css('display') === 'block')
{
//do something
}
else
{
//something else
}
Cette réponse n'est pas exactement ce que vous voulez, mais elle peut être utile dans certains cas. Si vous savez que l'élément a des dimensions lorsqu'il est affiché, vous pouvez également utiliser ceci:
var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0);
EDIT: Pourquoi cela pourrait être mieux que la vérification directe de la displaypropriété CSS ? Parce que vous n'avez pas besoin de vérifier tous les éléments parents. Si un élément parent a display: none, ses enfants sont également masqués mais l'ont toujours element.style.display !== 'none'.
Pour savoir s'il est visible avec du JavaScript brut, vérifiez si la propriété d'affichage est `` aucun '' (ne vérifiez pas `` bloc '', il peut également être vide ou `` en ligne '' et toujours visible):
var isVisible = (elt.style.display != "none");
Si vous utilisez jQuery, vous pouvez utiliser ceci à la place:
var isVisible = $elt.is(":visible");
Avec du javascript pur, vous pouvez vérifier la style.displaypropriété. Avec jQuery, vous pouvez utiliser$('#id').css('display')
Vous pouvez le vérifier avec par exemple jQuery:
$("#elementID").css('display');
Il retournera une chaîne avec des informations sur la propriété d'affichage de cet élément.