2011-04-06 4 views
0

Je dois créer un curseur double-pouce en utilisant les bibliothèques YUI 3. A single thumb slider exists, donc j'espère que je peux étendre le widget pour inclure un deuxième pouce.Comment ajouter un deuxième curseur à un curseur Javascript

Cependant, bien que je puisse faire de la programmation Javascript basique, c'est un niveau supérieur et je ne sais même pas comment démarrer. J'ai essayé pendant des semaines d'externaliser ce projet, et je n'ai trouvé personne de prêt ou capable, donc il semble que c'est à moi et à mes compétences Javascript de noob de résoudre ce problème.

J'ai essayé de trouver une sorte de tutoriel, mais pas de chance non plus. Chaque fois que je cherche comment construire un "curseur" à partir de zéro (dont je pense qu'il me donnera quelques points de départ), je reçois des instructions sur les galeries d'images qui défilent d'un côté à l'autre.

Tout ce que je sais est en ce moment que pour faire une extension à la bibliothèque YUI, je dois utiliser ce code:

YUI.add('gallery-dual-slider', function (Y) { /* custom code goes here */ }, '0.0.1', { requires: ['dd-drag'] }); 

Et je suis tout à fait coincé après. Je suppose que je dois en quelque sorte rendre un div sur le "rail", puis rendre ce div cliquable et draggable ...? Peut être? Est-ce que quelqu'un peut me donner un lien vers le tutoriel ou peut-être un pointeur sur la façon dont je fais cela?

Répondre

0

La structure de ce qui devrait être dans la fonction du module YUI.add (...) est décrite dans le guide utilisateur de Widget et les exemples. Quant à la mise en œuvre particulière d'un double/curseur multi-pouce, je suggère:

  1. Commencez avec un renderUI qui crée une travée de rail contenant deux travées de pouce (voir les méthodes de soutien CONTENT_TEMPLATE et de rendu pour Y.Slider en la source). Donnez à chacun de ces éléments des noms de classe comme yui3-dualslider-rail et yui3-dualslider-thumb-l ou -r et appliquez un style de base tel que les dimensions et la couleur afin d'avoir un aperçu visuel de la progression.
  2. Dans le fichier bindUI, créez une instance Y.DD.Drag pour chacun des deux segments de pouce et branchez-les chacun avec Y.Plugin.DragConstrain (vérifiez le nom du plugin dans la source Slider). Cela devrait entraîner deux pouces draggable sur un rail partagé.
  3. Voir la valeur-range.js dans la source Slider pour référencer l'ajout d'attributs min et max et la valeur. C'est à vous de décider comment vous voulez stocker/déclarer la (les) valeur (s) pour le Dual Slider. Par exemple, vous pouvez conserver un seul attribut "value" ou "values" qui contient un tableau, ou "value" peut contenir le delta entre deux autres attributs séparés, par exemple "minValue" et "maxValue". Il y a d'autres façons de peau ce chat, aussi.
  4. Apportez des progrès et des questions à #yui pour aider à partir de là.
+0

Luke, merci beaucoup d'avoir répondu. Comme vous le savez, je me bats avec ça depuis un moment. En fait, je regardais dans le code source de YUI 2, et j'ai remarqué que dans les commentaires, il y avait deux glisseurs l'un sur l'autre. Je me suis donc demandé si je serais capable de m'en sortir en posant un curseur l'un sur l'autre et en simulant un double curseur. Je peux obtenir les pouces pour ne pas se croiser, mais le rail du haut bloque le bas d'être cliqué. Cette ligne mérite-t-elle d'être poursuivie, et est-il possible de rendre un rail coulissant "invisible" aux clics de souris? – Questioner

+0

Pour YUI 3, je ne recommanderais pas cette approche. C'est peut-être possible, mais sur le plan architectural, il serait beaucoup plus simple de créer une nouvelle classe avec deux éléments déplaçables. – Luke

+0

Désolé d'être un parasite, mais les deux choses que je ne suis pas grokking dans ce que vous avez dit il y a le CONTENT_TEMPLATE et bindUI.Je ne vois aucune mention sur http://developer.yahoo.com/yui/3/api/index.html. Y a-t-il un endroit qui explique un peu ce que c'est et ce que je fais avec eux? – Questioner