Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 25/12 : 1 commande de contenus en ligne
= 1 chance de gagner un cadeau*. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
  1. Livres et vidéos
  2. jQuery
  3. Manipuler les feuilles de style CSS
Extrait - jQuery Le framework JavaScript pour des sites dynamiques et interactifs (4e édition)
Extraits du livre
jQuery Le framework JavaScript pour des sites dynamiques et interactifs (4e édition) Revenir à la page d'achat du livre

Manipuler les feuilles de style CSS

Introduction

Est-il nécessaire de souligner l’importance prise par les feuilles de style dans l’écriture du code des pages web ? Avec jQuery, la modification dynamique des propriétés de style CSS se révèle facile à implémenter.

La méthode css() étudiée aux trois premiers points de ce chapitre n’est pas sans rappeler la méthode attr() abordée au chapitre précédent.

Accéder à une propriété de style

La méthode css() se décline de trois façons. La première permet uniquement d’accéder à la propriété de style CSS d’un élément donné.

css(nom)

Cette méthode permet d’accéder à une propriété de style CSS du premier élément trouvé.

Le nom est une chaîne de caractères qui reprend le nom de la propriété de style CSS à accéder.

Cette méthode renvoie une chaîne de caractères (string).


$("p").css("color");
 

Dans cet exemple, la méthode renvoie la valeur de la propriété CSS color du paragraphe <p>.

Exemple

Soit une page avec trois boîtes <div> identiques :

images/C04-001.png

Le document HTML complet :


<!doctype html> 
<html lang="fr"> 
<head> 
<meta charset="utf-8"> 
<title>jQuery</title> 
<script src="jquery.js" ></script> 
<script> 
    $(document).ready(function(){ 
        $("#div1").click(function () { 
            var couleur = $(this).css("background-color"); 
            $("#resultat").html("La...

Modifier les propriétés de style

La fonction css(), dotée de certains paramètres, permet également de modifier des propriétés de style d’éléments de la page.

css({propriété de style})

Cette fonction modifie les propriétés de style CSS d’un élément donné en utilisant la notation CSS clé/valeur pour les propriétés de style à modifier.


$("p").css({ color: "red", background: "blue" });
 

Il faut remarquer la présence des accolades habituelles pour les déclarations de style.

Si la clé contient un trait d’union comme par exemple background-color, l’ensemble doit être placé entre des guillemets (soit "background-color").

La notation JavaScript (CamelCase) peut également être adoptée, soit backgroundColor au lieu de background-color.

Cette méthode renvoie un objet jQuery.

Depuis la version 1.6 de jQuery, on peut utiliser des valeurs relatives pour modifier la valeur d’une propriété de style CSS. Celle-ci peut se noter avec "+=" ou "-=" par rapport à la valeur courante.


$ ("#item").css("left", "+=10px")
 

Dans cet exemple nous déplaçons, l’élément item de 10 pixels vers la gauche.

Exemple

Illustrons...

Attribuer des propriétés de style

La fonction css() de jQuery propose une notation pour appliquer des propriétés de style.

css(clé,valeur)

Modifie les propriétés de style d’un élément donné en utilisant la notation clé/valeur pour les propriétés de style à transformer :

  • clé (chaîne de caractères) correspond au nom de la propriété de style à modifier.

  • valeur (chaîne de caractères ou nombre) est la nouvelle valeur de la propriété. Si un nombre est spécifié, jQuery le convertit automatiquement en pixels.


$("p").css("color","red");
 

Cette méthode renvoie un objet jQuery.

Exemple

Prenons deux divisions superposées. Par un script jQuery, modifions l’ordre de celles-ci au survol de la souris.

images/C04-007.png
images/C04-008.png

<!doctype html> 
<html lang="fr"> 
<head> 
<meta charset="utf-8"> 
<title>jQuery</title> 
<script src="jquery.js" ></script> 
<script> 
    $(document).ready(function(){ 
        $("#boite1").mouseover(function () { 
            $(this).css('z-index','10'); 
        }); ...

Le dimensionnement

jQuery propose une série de méthodes relatives à la dimension des éléments.

height()

Renvoie la hauteur d’un élément, exprimée en pixels.


$("p").height();
 

Cette méthode renvoie une chaîne de caractères (string).

height(valeur)

Assigne une hauteur aux éléments spécifiés. Si aucune unité n’est spécifiée (comme em ou %), l’unité px sera choisie par défaut.


$("p").height(120);
 

Cette méthode renvoie un objet jQuery.

width()

Renvoie la largeur d’un élément, exprimée en pixels.


$("p").width();
 

Cette méthode renvoie une chaîne de caractères (string).

width(valeur)

Assigne une largeur aux éléments spécifiés. Si aucune unité n’est spécifiée (comme em ou %), l’unité px sera choisie par défaut.


$("p").width(120);
 

Cette méthode renvoie un objet jQuery.

Depuis la version 1.4 de jQuery, il est possible de modifier la hauteur et la largeur des éléments d’une sélection par une fonction.

Avec la version 3 de jQuery ces propriétés savent renvoyer des valeurs avec des décimales.

La syntaxe est alors :

height(fonction(index, valeur actuelle))

width(fonction(index, valeur actuelle))

Où :

  • fonction spécifie...

Le positionnement

Parallèlement aux méthodes jQuery sur la dimension des éléments, jQuery propose des méthodes pour déterminer la position de ceux-ci.

position()

Renvoie la valeur top et left de la position d’un élément relative à son élément parent.


$("p:first").position();
 

Cette méthode renvoie un objet de type object{top,left}.

offset()

Renvoie la valeur top et left de la position d’un élément relative au document.


$("p:first").offset();
 

Cette méthode renvoie un objet de type object{top,left}.

Plus particulières sont les méthodes scrollTop(valeur) et scrollLeft(valeur) qui permettent de modifier le décalage par rapport au bord supérieur ou au bord gauche pour un élément. D’une certaine façon, ces méthodes permettent de contrôler l’amplitude de la barre de défilement verticale et horizontale.

scrollTop(valeur)

Modifie le décalage (en pixels) entre le bord supérieur du document (top) et l’élément sélectionné, en prenant la valeur passée en argument.

valeur : nombre positif représentant le nouveau décalage désiré (en pixels).


$("div").scrollTop(300);
 

Cette méthode renvoie un objet jQuery.

scrollLeft(valeur)

Modifie le décalage (en pixels)...

Applications

1. Redimensionner la taille des caractères

Nous allons permettre à l’utilisateur de modifier, à son gré, la taille de la police de caractères pour un meilleur confort de lecture.

Affichage initial :

images/C04-013.png

Le document HTML :


<!doctype html> 
<html lang="fr"> 
<head> 
<meta charset="utf-8"> 
<title>jQuery</title> 
<script src="jquery.js" ></script> 
<script> 
    $(document).ready(function(){ 
        $('input').click(function(){ 
            var texte = $('p'); 
            var taille = texte.css('fontSize'); 
            var nombre = parseFloat(taille, 10); 
            var unite = taille.slice(-2); 
            if(this.id == 'plus') { 
                nombre *= 1.2; 
                } 
                else if (this.id == 'moins') 
                { 
                nombre /=1.2; 
            } 
            texte.css('fontSize', nombre + unite); 
        }); 
    }); 
</script> 
<style> 
    p { 
        font-size: 1em; 
    } 
</style> 
</head> 
<body> 
<input type="button" value="Plus grand" id="plus" /> 
<input type="button" value="Plus petit" id="moins"...