Dans le passé, nous avons utilisé l'attribut CSS "Affichage" pour afficher et masquer les éléments DOM. Pour vérifier si un élément est visible, nous pourrions simplement utiliser:
element.offsetWidth > 0
Connaissez-vous une autre manière ou un raccourci pour voir si un élément est visible? p> p>
6 Réponses :
Visibilité de l'élément de bascule par Kent est un moyen de présentation non obstrissel et sémantiquement valide qui se dégradera bien pour Navigateurs non compatibles non-CSS. P>
Regardez également ce Article Devx qui compare les propriétés d'affichage et de visibilité. < / p>
Bien que les liens que vous avez fournis soient appropriés, je pense que certains électeurs n'aiment pas que de simples réponses ...
Mon objectif est de fournir de l'aide à celui qui a besoin de réponses, et si des liens peuvent le faire, cela ne me dérange pas d'avoir des votes négatifs ... au détriment de la fourniture d'aide.
+1 - D'accord alors. Je pense que la bibliothèque JS "Togling Element" est le point culminant de la poste. Joli.
Utilisez jQuery et vous pouvez faire ce
Voici ma configuration de test:
C'est la méthode la plus rapide que vous puissiez comprendre?
Non, regardez la bibliothèque "Visibilité des éléments de basculement" ci-dessous.
Les sélecteurs CSS sont optimisés pour trouver des ensembles d'éléments correspondants. Plusieurs bibliothèques mettent en œuvre cette fonctionnalité. JQuery, extjs noyau pour nommer un couple.
Utilisation de EXT Core, je pourrais écrire une fonction JavaScript qui vérifie la visibilité comme suit: p> voir
N'oubliez pas que la visibilité: cachée fait un élément caché, mais cet élément occupe toujours son espace, qui peut avoir des conséquences inattendues sur la mise en page (cela peut être un avantage également si vous en êtes au courant).
i Utiliserait un positionnement absolu pour déplacer l'élément loin à gauche, en dehors de la largeur d'écran. Ceci obtient l'élément hors du flux afin que l'élément caché n'a aucun impact sur la mise en page, rend l'élément pratiquement invisible, et il n'a pas les désamorçages de l'affichage: Aucun. p> puis pour déterminer si un élément est masqué, vous pouvez utiliser sa propriété offsetleft: p> si vous devez déterminer Si un élément enfant est éteint (vous ne savez pas si c'est l'élément caché ou son enfant), vous pouvez utiliser .OffsetParent et une boucle de temps, comme décrit dans Article de la position de la position de PPK . p> p>
Merci Pawel, c'est la meilleure réponse maintenant. Le problème est que tous nos éléments DOM ont des styles en ligne pour un positionnement absolu, de sorte que la valeur "gauche" de la classe ne serait pas appliquée. Mais vous répondez approche de ce que je recherche!
Le problème avec cette solution est qu'il ne la cache pas des navigateurs non compatibles non-CSS, tels que les lecteurs d'écran. Cela peut être un avantage si vous voulez que le texte soit disponible uniquement pour les lecteurs d'écran, mais dans ce cas, cela ressemble à un inconvénient.
function isVisible(elem) {
return elem.style.visibility !== "hidden";
}
Cela ne fonctionnera pas si l'élément lui-même n'a pas d'attribut de visibilité, mais hérite de la valeur de son parent.
Vérification de la mise au point fonctionnerait, soit le parent est visible ou non.
$(":text:visible:enabled").filter(function(){
return $(this).parents.filter(function(){
return this.style.display == "none";
}).size()==0;
}).slice(0,1).focus();
Je suppose simplement stocker l'état dans une variable quelque part et la mise à jour à chaque fois que vous modifiez la visibilité est hors de la question ...
Pas vraiment une réponse, mais vous pouvez vérifier le code source de certaines bibliothèques JS comme JQuery ou MotoTools pour voir comment ils le font.
@Greg: vous êtes correct - ce serait trop au-dessus de la tête. Vous devez mettre à jour tous les enfants d'un élément quand il devient changé ... @darko z: J'ai déjà regardé JQuery, mais je vais vérifier motools maintenant ...
Pourquoi considérez-vous vos alternatives à être trop lentes?
@Gumbo: C'est trop lent, car nous parlons de centaines d'éléments qui sont vérifiés pendant la durée de vie d'une application Web. Je n'ai pas besoin de cette vérification pour juste un site Web, mais pour un framework Ajax: qooxdoo.org