Firefox, requête du sélecteur et de la pseudo-sélecteur
Est-il de toute façon à utiliser un pseudo sélecteur de Firefox querySelector() ou querySelectorAll() fonctions permettant de détecter la visibilité? En particulier, je veux être en mesure de faire quelque chose comme ceci:
elem.querySelector('#list .list-item:visible');
elem.querySelector('#section .sub-section:visible .title');
Pas besoin de s'inquiéter à propos de navigateur incohérences ou autres de la mise en œuvre, à seulement Firefox. Merci!
EDIT: Visible est définie par affichage pas être aucun et visibilité pas être caché.
- Quelle est votre définition de "visibilité"?
- L'élément DOM l'affichage de bloc de travail, mais, idéalement, il serait également vérifier que la visibilité est visible.
Vous devez vous connecter pour publier un commentaire.
Non, il n'y en a pas. La spécification CSS ne définit pas une
:visible
(ou connexes) sélecteur, et autant que je sache, Firefox ne pas mettre en œuvre non standard pseudo-sélecteurs.Si vous souhaitez mettre en œuvre vous-même, notez comment jQuery met en œuvre ses
:visible
sélecteur:Source: http://docs.jquery.com/Release:jQuery_1.3.2#:visible.2F:hidden_Overhauled
visibility: hidden
va prendre de l'espace sur le documentPuisqu'il n'est pas natif implémentation de l' :visible pseudo-sélecteur j'ai décidé d'utiliser des classes CSS pour masquer et afficher mes éléments, permettant ainsi à tout simplement vérifier le nom de la classe au lieu de visibilité. Voici ce que mon sélecteur ressemble à ça:
Maintenant, en 2016, on peut aussi utiliser le caché attribut html5, donc ce sélecteur serait trop de travail:
À l'aide de la plaine de javascript, vous pouvez également émuler jQuery facilement des comportements, en transformant votre querySelector résultats dans un tableau, et le filtrage:
Qui crée un simple tableau avec les résultats de votre sélection, que vous pouvez filtrer comme:
ou même le reste de jquery conditions (
item.style.visibility != "hidden" && item.style.opacity > 0 && ...
).Comme un liner:
Pour trouver des éléments qui ne sont pas
display:none
le sélecteur CSS équivalent à:visible
estVous pourriez faire la même chose pour
visibility:hidden
puis de la chaîne d':not()
sélecteurs si vous en avez besoin.Voici un violon.
Edit: Être prudent avec les espaces et autres signes de ponctuation. Si plus tard vous manipuler ces éléments avec JQuery et
hide()
, par exemple, et la nécessité d'appeler la même fonction, alors vous aurez besoin de la chaîne d':not([style="display: none;"])
à votre sélecteur CSS.Vérifier si l'élément est visible, prend en charge sur tous les principaux navigateurs:
jQuery:
Vanille JS: