J'utilise ce plugin pour créer un montage horizontal. Vous pouvez utiliser les flèches gauche et droite pour naviguer entre les dates. Cliquer sur une date changera le pied de page à celui correspondant à cette même date.Comment puis-je vérifier la visibilité des éléments lors de leur affichage/masquage avec scaleX()?
Mon problème est le suivant: J'essaie de savoir si certaines dates sont visibles dans la fenêtre courante. Ainsi, pour les instances où le plugin est chargé pour la première fois, les dates suivantes sont affichées: "16 Jan", "28 Feb", "20 Mar", "20 mai". Lorsque je clique sur la flèche droite, ces dates sont remplacées par les dates suivantes: "09 juil", "30 août", "15 sept", "01 nov". Maintenant, à ce stade, je voudrais savoir, par exemple, si la date "16 Jan" est visible ou non (Dans ce cas, il n'est pas visible).
Comme chaque date est ajoutée à l'élément a
qui correspond à chaque date sous la forme d'un attribut data-date
je peux obtenir l'élément que je veux vérifier avec le sélecteur suivant (exemple pour « 16 Jan »):
$("a[data-date='16/01/2014'");
maintenant, afin de vérifier la visibilité que j'ai essayé deux approches différentes:
première approche (comme on le voit dans cette answer)Cette approche me renvoie toujours vrai et ne fonctionne donc pas.
Deuxième approche (comme on le voit dans cette answer)
function isElementInViewport (el) {
//special bonus for those using jQuery
if (typeof jQuery === "function" && el instanceof jQuery) {
el = el[0];
}
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */
);
}
Et après:
var a = $("a[data-date='16/01/2014'");
var b = isElementInViewport();
Cette approche me retourne toujours vrai et donc ne fonctionne pas non plus. Je peux comprendre que ces approches peuvent ne pas fonctionner parce que la façon dont les éléments apparaissent et disparaissent après chaque clic flèche est due à l'utilisation de la fonction CSS scaleX(), dont je n'ai aucune idée de l'impact dans cette situation spécifique. Donc, après tout cela, ma question est la suivante: Est-il même possible de vérifier la visibilité des éléments dans ce cas précis? Et si oui, comment puis-je le faire?
Pouvez-vous simplement ajouter un indicateur de variable sur clic qui dit 'isDateOpen = true'? ou quelque chose comme ça? Puisque vous avez déjà quelques fonctionnalités autour d'elle. – ntgCleaner
@ntgCleaner Je pourrais mais pour faire cela je devrais calculer la largeur qui est montrée par page, la largeur totale de la chronologie, calculer le nombre de pages, faire une structure de données qui associe les dates à la page correspondante et puis quand je clique sur la flèche, ajoute une propriété aux dates comme tu l'as suggéré. Ceci est cependant mon dernier recours. Je cherchais quelque chose de plus simple. –