RECHERCHE

Plan du site

BOURSE

RUBRIQUES

 
 TUTORIELS 
Une barre d'outils en CSS et Javascript (1/2)
Utiliser les spécifications CSS2 pour réaliser une barre d'outils web réaliste, et Javascript pour y associer des fonctionnalités d'édition de texte.  (19 février 2002)
 

Dans un précédent article, nous avons vu comment agrémenter un formulaire d'envoi d'e-mail avec CSS. Il est possible d'aller encore plus loin pour rendre ses formulaires aussi conviviaux que possibles, et notamment lors de l'envoi, non plus d'un e-mail, mais d'un texte à l'aide d'un champ multiligne. Nous avons choisi ici de permettre très facilement de formater le texte saisi afin de préciser que certaines parties doivent être en gras, en italique, ou représentent un lien hypertexte. Ceci est utile notamment lors de l'envoi d'un message dans un forum. Ces trois fonctionnalités seront réalisées en Javascript, mais nous allons tout d'abord nous intéresser à leur réalisation graphique, qui devra émuler le style des barres d'outils classiques de nos systèmes d'exploitation. L'exploitation des boutons fera l'objet du deuxième volet de ce tutoriel.

Avant d'aller plus loin, voici d'emblée le résultat global:

Nous avons défini trois boutons, l'un pour formater le texte en gras "bold", l'autre pour formater le texte en italique, le troisième pour insérer un lien. Il suffit de sélectionner une partie du texte contenu dans le champ multiligne, et d'appuyer sur l'un des boutons, pour obtenir l'effet désiré.

Examinons d'abord le volet CSS, qui permet de régler l'apparence des boutons, selon que ceux-ci sont dans l'état "par défaut", dans l'état "survolé". Nous allons définir trois styles CSS, l'un correspondant au fond de la barre d'outils (style outils), les deux suivants aux deux états possibles (styles out et over, respectivement) de nos boutons (nous laissons de côté ici d'autres états comme "bouton pressé et souris non rélachée", par exemple).

Pour créer nos styles, nous allons utiliser trois couleurs prédéfinies, encapsulées dans les variables buttonface, buttonhighlight, et buttonshadow. La première correspond à la couleur (un gris) de fond de la barre d'outils d'une part, des boutons dans l'état "par défaut" d'autre part. Les deux suivantes correspondent aux couleurs des bords de boutons quand ceux-ci sont dans l'état "survolé": buttonhighlight est la couleur blanche, buttonshadow un gris plus foncé.

On écrira ainsi:

#outils {
               width: 262px;
               background: buttonface;
               border-top: 1px solid buttonhighlight;
               border-left: 1px solid buttonhighlight;
               border-bottom: 1px solid buttonshadow;
               border-right: 1px solid buttonshadow;
               margin: 0;
               text-align:right;
}

.out {
               background: buttonface;
               border: 1px solid buttonface;
               margin: 1;
}

.over {
               background: buttonface;
               border-top: 1px solid buttonhighlight;
               border-left: 1px solid buttonhighlight;
               border-bottom: 1px solid buttonshadow;
               border-right: 1px solid buttonshadow;
               margin: 1;
}

Le code en lui-même appelle peu de commentaires. "out" et "over" sont des classes (noter le point qui les précède), tandis que "outils" est un identificateur (voir pour plus d'informations). On a défini des marges quand celles-ci étaient nécessaires pour la présentation. La taille choisie pour la largeur (du fond) de la barre d'outils est arbitraire (en fait adaptée à la largeur du champ texte, soit 30 caractères sous IE).
Il nous reste à gérer le "rollover" en Javascript, en utilisant les images suivantes:

      

et avec les évenements: onMouseOver et onMouseOut. On écrira donc, par exemple pour la première image (appelée bold.gif):

<div id="outils">
   <img class="out" src="bold.gif"
              width="16" align="middle" height="16"
              onMouseOver="this.className='over';"            
              onMouseOut="this.className='out';"
              onclick=";">
</div>

(on laisse volontairement vide pour l'instant le comportement associé à l'événement onClick)

qui se traduit à l'écran par

Il reste maintenant à créer des fonctions Javascript (des comportements) pour nos trois boutons, et à fournir le code précis pour l'intégration HTML de l'ensemble champ de formulaire + barre d'outils. Ce sera l'objet de la deuxième partie ce ce tutoriel.

 
[ Jérôme MorlonJDNet
 
Accueil | Haut de page
 
 

 

 
 
[an error occurred while processing this directive]