7
votes

Défilement personnalisé sur la toile HTML5

Quelle est la manière recommandée de fournir des barres de défilement de défilement et de session natives pour de très grandes données affichées dans une toile HMTL5?

J'ai besoin d'afficher des données 128000x128000 pixels. L'utilisation d'une toile avec largeur / hauteur définie sur 128000 n'est pas une option car elle utiliserait une quantité énorme de RAM (environ 61 Go selon mon calcul rapide).

J'ai donc besoin d'un moyen de fournir des barres de défilement personnalisées pour une toile HTML5.


2 commentaires

Eh bien, si la toile dessine la barre de défilement, elle ne sera pas vraiment originale. Qu'essayez-vous d'atteindre?


Je cherche essentiellement un moyen d'afficher une barre de défilement natif que je peux attraper des événements de défilement. :)


3 Réponses :


0
votes

JCanvas est un plugin JQuery qui peut vous aider.


2 commentaires

Merci pour la suggestion, malheureusement, je ne pouvais trouver aucun soutien natif à JCanvas, mais il a quelques autres choses très belles. J'ai fini par faire une chose de zoom à la place, inspiré par la fonctionnalité de Google Maps.


Très bien alors. J'espère que je t'ai aidé. Considérez le vote et acceptez ma réponse pour que les autres comprennent que ma réponse vous a aidé.



1
votes

question intéressante. Je n'ai pas utilisé beaucoup, mais je crois que l'intérieur du est mieux pensé comme une image, c'est-à-dire que c'est une boîte noire aussi loin comme le DOM est concerné.

En tant que tel, je ne pense pas que vous puissiez vraiment faire défiler de la manière dont vous imaginez. Si vous avez eu un code de 128000 × 128000 , vous pouvez le mettre à l'intérieur d'un

c'est par exemple. 1280 × 1280 et définissez que
sur Overflow: caché , mais comme vous le dites, un 128000 × 128000 est impraticable.

Je suppose que le type de solution que vous recherchez fournirait une interface virtuelle de canevas de 128 000 × 128000, mais puis divisez-la en morceaux, fournissez une interface de défilement et dessine dans chaque morceau car il a été défilé en vue. < / p>


0 commentaires

5
votes

Après un test rapide, je ne suis pas sûr que Chrome ou Firefox rendra même une toile aussi grande. Mon pari serait de créer un élément de toile mais ne l'appendez jamais à la DOM. Tout comme ceci: xxx

puis crée une toile plus petite qui affichera une partie de votre toile cachée xxx

et utilisez la méthode de cuisson Pour dessiner des portions: xxx

alors il serait à vous de fournir des boutons haut / bas / gauche / gauche pour naviguer, ou peut-être simuler des fausses barres de défilement en utilisant 20px larges divs Voulez-vous seulement montrer des barres de défilement et que vous accrocheriez un auditeur encorecroll. Et chaque fois que l'utilisateur change de position, appelle à nouveau un appel pour dessiner, mettre à jour les positions x / y (40 et 50 dans mon exemple).

après avoir dit cela, encore une fois, même lorsqu'il est caché, je doute que ce navigateur Travaillera avec une toile aussi grande.

Je cherche une solution au même problème, donc si dans votre recherche, vous avez de la chance, veuillez partager.


1 commentaires

J'ai résolu mon problème avec une fonction de zoom. Réglage de la largeur et de la hauteur à 100%, puis faites zoomer / zoom arrière et faites glisser avec la souris. Cela ajoute une complexité supplémentaire à l'application / l'expérience utilisateur. En outre, rendant une énorme morceau de données, même sur une toile plus petite peut parfois prendre un certain temps. Un morceau de 60000x60000 réduit par exemple, une toile 1000x1000 prend généralement 2-3 secondes pour dessiner.