TUTORIEL XML 
XUL : disposition des éléments
Présentation des principales méthodes de mise en place des éléments graphiques de XUL. (22/04/2005)
Après avoir vu les principaux éléments graphiques de XUL (voir notre article du 17/03/2005), nous allons ici nous intéresser plus particulièrement à la mise en page de ces éléments, c'est-à-dire les différentes positions qu'il est possible de leur donner. XUL offre une large palette de possibilité dans ce domaine, applicables à différents niveaux de disposition : l'élément par rapport à son conteneur ou aux autres éléments, ou le contenu de l'élément...

En règle générale, la disposition des éléments se fait par rapport à la boîte qui les contient, à charge aux éléments contenus de s'adapter entre eux aux indications marquées pour un des leurs, ou plusieurs. Les options de disposition au sein d'une boîte peuvent ensuite être regroupées selon la disposition à opérer. Nous allons en aborder plusieurs ici-même.

Placer les éléments entre eux
Par défaut, les éléments graphiques XUL sont disposés de manière séquentielle, à la manière du HTML : sans autre indication, ils se suivent de gauche à droite et de haut en bas, leur taille ne prenant en compte que ce qu'ils contiennent. Il est cependant, et heureusement, possible de surseoir à cela, et parvenir à mettre un peu plus d'ordre dans cet ensemble.

a) Espacer les éléments
Plutôt que d'avoir les boutons collés les uns aux autres, le premier affiché restant collé à la bordure de l'élément conteneur, il est possible d'introduire des espaces entre ceux-ci. L'élément spacer s'utilise comme un élément classique, mais pour agir il doit recevoir un attribut spécifiant son mode d'utilisation, le plus classique étant width.
Un attribut réellement utile, cependant, est flex. Celui-ci détermine la flexibilité relative entre les éléments, et est une des principales méthodes d'arrangement des éléments. Dès son utilisation, la ligne d'élément prend tout l'espace possible, et les éléments spacer prennent un espace proportionnel à la valeur que l'on a donné à leur attribut flex. Ainsi, un spacer avec un flex à 2 prendra deux fois plus de place qu'un autre dont le flex est à 1. C'est le navigateur qui gère ensuite les placements selon ces données.

b) Modifier l'ordre d'affichage des éléments
Il est possible de modifier la manière dont sont disposés, par défaut, les éléments au sein d'une boîte, en faisant appel à l'attribut dir de celle-ci. Par défaut, cet attribut prend la valeur "forward", qui place les éléments de gauche à droite. On peut cependant lui assigner la valeur "reverse", qui les placera de droite à gauche. Attention, la modification sera complète : le premier élément de la suite partira non plus du côté gauche, mais du côté droit : <hbox dir="reverse">
On peut également sortir de la rigueur de l'affichage "dans le sens du code" : en spécifiant pour chaque élément son ordre dans la suite, ceux-ci peuvent être disposés à l'envi dans le code XML, l'interpréteur XUL se chargeant de prendre en compte leur position assignée. Cette position s'indique par l'attribut ordinal de chaque objet : <button label="4e élément" ordinal="4" />.

c) Regrouper les éléments
Le groupement des éléments permet de contrôler leur placement horizontal. Celui-ci se détermine à l'aide de l'attribut pack appliqué à l'élément parent. Cet attribut peut prendre, bien sûr, plusieurs méthodes : start, end et center. La valeur par défaut est start, c'est-à-dire que les éléments sont groupés sur la gauche du conteneur. end les place sur sa droite, et center en son milieu : <hbox pack="center">.

d) Cacher un élément
Simplement : l'attribut booléen hidden, appliqué à un élément, permet de l'enlever de l'interface, sans laisser de trace (l'espace qu'il occupait n'est pas conservé). Cela autorise des interfaces dynamiques.
<button label="caché" hidden="true" />

e) Obtenir des éléments de même taille
Bien sûr, vous pouvez faire appel à un attribut comme height, et l'appliquer à tous les éléments voulus, mais le futur peut amener un élément nécessitant une plus grande hauteur, et il vous faudra dès lors adapter les tailles de tous les éléments graphiques. Le plus simple reste de spécifier que certains éléments d'un groupe doivent avoir la même taille que le plus grand élément de ce groupe. Cela peut s'accomplir par le biais de l'attribut align de la boîte contenant les éléments, et en lui appliquant la valeur "stretch" : <hbox align="stretch">. Cet attribut peut également prendre les valeurs start, center, end et baseline., qui agissent sur la position d'un élément par rapport au premier de la suite d'éléments.

f) Faire que les éléments prennent tout l'espace disponible

Un flex appliqué à un seul élément d'une suite lui fait occuper toute la largeur du conteneur. Seulement dans ce cas l'élément "flexé" occupera souvent trop de place, ou sera disproportionné par rapport aux autres. Appliquer un flex de valeur 1 à chacun des éléments leur fait occuper tout l'espace disponible, chacun ayant la même largeur.

  Forum

Réagissez dans les forums de JDN Développeurs

Équipé de ces premières armes, il est possible de grandement améliorer le rendu des interfaces d'un logiciel XUL. Nous explorerons plus en avant ces possibilités de mise en page des éléments graphiques dans notre prochain article.
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages