Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site
On ne peut pas tout faire avec la librairie de base de jQuery. Par exemple ne cherchez pas à programmer un "drag and drop" (glisser et déposer)
avec la librairie de base de jQuery. Mais heureusement il y a des extensions (appelées aussi "greffons").
L'extension la plus célèbre est jQuery UI (UI : comme interface utilisateur). Dans cette page je vais présenter les outils (ou widgets)
de cette extension.
On dit que jQuery UI c'est un pack de "widgets" (composants graphiques)."Drag & drop" est le composant le plus utilisé.
Certains de ces widges deviendront progressivement moins utiles avec la montée en puissance de HTML, CSS mais aussi JS natif.
Après extraction vous obtenez un dossier comprenant différents fichiers.
Comme dans la librairie de base il y a pour chaque type de fichiers (feuille de style, fichier JS) deux versions : la version avec commentaire et la version de production minimaliste (beaucoup plus légère).
Attention jQuery UI c'est non seulement un framework JavaScript mais aussi un framework CSS. Si vous chargez dans vos pages uniquement le fichier d'extension .js de la librairie jQuery UI le résultat sera ... décevant. Il faut charger aussi la feuille de style du pack : jquery-ui.min.css !
Plutôt que de créer trois pages ou une page unique très longue j'ai décidé de répartir le texte de la page entre trois onglets.
En HTML il faut créer une boite (balise SECTION) contenant trois boites "enfants" (balises ARTICLE).
Il faut aussi créer des liens vers chaque article.
Pour que l'aspect de la page soit modifiée radicalement (création d'onglets : un par article) il suffit d'appliquer à la boite principale la méthode tabs() de jQuery UI.
J'ai renommé les fichiers correspondant à la librairie jQuery UI. Ils se nomment tout simplement : jquery_ui.js et jquery_ui.css
La librairie jQuery UI ne peut fonctionner seule ; comme c'est un extension de jQuery, la librairie principale jQuery doit être chargée également.
Concernant le code HTML dans la partie BODY il est relativement simple.
Quant au script il est d'une simplicité redoutable !
Il suffit d'appliquer la méthode tabs() au conteneur principal (élément SECTION).
En fait jQuery UI ajoute des classes à certaines balises ; classes qui sont définies dans la feuille de style de la librairie jQuery.
C'est pour cette raison qu'il faut charger non seulement le fichier .js de la librairie mais aussi le fichier .css !
Avec les outils de développement du navigateur vous pouvez visualiser le code effectif de la page.
Extrait du code effectif de la page :
jQuery UI a ajouté aux éléments HTML différentes classes décrites dans le fichier .css du greffon.
C'est ainsi que les onglets et les boites sont mises en formes.
Pour gérer une page volumineuse on peut aussi utiliser la méthode accordion().
Dans ce cadre la première partie est dépliée ; les autres parties sont repliées (on ne voit que le titre).
Si le visiteur clique sur le titre de la deuxième partie celle-ci est alors dépliée (affichage du contenu)
et la première partie est repliée (contenu masqué). Et ainsi de suite ...
Dans la partie HEAD il faut toujours inclure les deux fichiers d'extension ".js" et la feuille de style (avec la balise LINK)
de l'extension.
Mais ici, afin d'obtenir les dernières versions stables, je fais un lien vers le serveur GOOGLE qui met à disposition les librairies jQuery,
jQuery UI les plus récentes.
Attention saisissez bien "https" (et non pas "http") !
Dans la partie BODY on retrouve exactement le même texte que dans l'exemple précédent.
Chaque partie du texte doit être précédée d'un titre qui contient un lien vide (balise A).
Cette instruction HTML est indispensable. Elle indique à jQuery UI les endroits où il doit se replier ou se déplier.
Le script est encore d'une simplicité déconcertante.
Il suffit d'appliquer la méthode accordion() au conteneur principal (ici la balise SECTION).
Comme avec le widget "onglets", le widget "accordéon" ajoute aux éléments HTML des classes décrites dans le fichier .css de la librairie à condition d'avoir chargé la feuille de style "jquery-ui.css".
Passons maintenant à la troisième méthode du greffon : resizable().
Dans l'exemple ci-dessous chaque image peut être redimensionnée.
Dans la partie HEAD toujours inclusion de trois fichiers.
CSS : une règle de style pour affecter une dimension aux images.
Le script : application à la collection d'images de la méthode resizable().
Les images apparaissent les unes sous les autres. Car là encore jQuery UI a rajouté des des classes aux éléments HTML !
Nous allons maintenant évoquer la méthode sortable()
Attention pour que les éléments soient permutable au sein d'une élément parent il faut appliquer la méthode sortable() au parent (ici UL ou Ol) !
Dans la partie HEAD je charge le fichier jquery_touch_punch.js.
Sans ce "greffon" certains outils jQuery tels la méthode sortable() ne fonctionnent pas sur les terminaux à écran tactile (smartphone et tablette).
Cette extension ne pèse que 2 KO !
Pour récupérer cette extension vous pouvez aller sur le site :http://touchpunch.furf.com
Je vais maintenant vous présenter le widget le plus célèbre de jQuery UI : le "drag and drop".
Partie HEAD : Comme dans l'exemple précédent il faut charger deux fichiers JS (celui de la librairie jQuery et celui de jQuery UI).
Par contre dans le cadre d'un "glisser-déposer" il n'est pas nécessaire de charger la feuille de style de la librairie jQuery UI.
CSS : Les images sont des éléments inline-block (boites disposées côte à côte).
HTML : insertion de quatre images et création d'une grande boite avec un fond rose.
La première méthode rend "glissable" les éléments référencés (donc ici les images).
La deuxième méthode rend "déposable" les éléments référencés (donc ici une seule boîte: le DIV unique).
Donc on pourra faire glisser les images pour les déposer dans la boîte DIV (qui a un fond rose ...) !
Vous pouvez constater que les images peuvent glisser partout car je n'ai pas paramétrer la méthode draggable().
Vous devez programmer un test de connaissances en biologie aquatique. Vous devez en effet classer quatre photos dans deux cadres ; deux photos représentent des algues et deux autres des plantes aquatiques.
Les images et les boites DIV (fond rose) sont "inline-block".
Dans le cadre du "responsive web design" les largeurs des images, des marges et des DIV doivent être exprimés en % !
Le code jQuery ne pose aucune difficulté.
Ne pensez pas que le "drag and drop" ne peut s'appliquer qu'à des images. On peut glisser & déposer n'importe quel élément de la page.
Dans les exemples vous avez vu que l'on pouvait déplacer les images n'importe où dans l'écran.
Dans l'exemple ci-dessous les éléments "draggable" ne peuvent être glissés qu'à l'intérieur d'une grande boite car la méthode draggable()
est paramétrée.