Modifier en JS des propriétés CSS
Commençons par un exemple basique.
En CSS
On a un élément dont l'id est
exemple :
Code : HTML1 | <div id="exemple">Pif paf pouf</div>
|
On veut lui appliquer en JS le style suivant :
Code : CSS1
2
3
4
5
6
7 | #exemple
{
background-color: #ff0;
color: #0f0;
font-size: 1.2em;
text-align: center;
}
|
En JS
Voici comment réaliser ceci en JS :
Code : JavaScript1
2
3
4
5
6
7
8 | // on récupère l'élément
var elmt = document.getElementById("exemple");
// on modifie son style
elmt.style.backgroundColor = "#ff0";
elmt.style.color = "#0f0";
elmt.style.fontSize = "1.2em";
elmt.style.textAlign = "center";
|
Style, class et id
En CSS
Comme vous le savez sûrement, on peut modifier le style d'un élément de trois façons différentes en CSS.
- Soit en utilisant l'attribut style :
Code : HTML1 | <div style="color:#0f0">patati</div>
|
- Soit en définissant une classe :
Code : CSS
Code : HTML1 | <div class="exemple">patata</div>
|
- Soit en utilisant un identifiant :
Code : CSS
Code : HTML1 | <div id="exemple">tralala</div>
|
Et en JS ?
En JS, nous disposons donc des attributs
id et
className pour lire ou modifier l'identifiant et la classe d'un élément.
Voici un exemple : on modifie l'id, puis la classe d'un élément.
Code : JavaScript1
2 | document.getElementById("ancien_id").id = "nouvel_id";
document.getElementById("nouvel_id").className = "Une_classe";
|
Et on utilise le sous-objet
style (comme vu un peu plus haut) pour modifier les propriétés indiquées dans l'attribut
style de la balise.
Ceci nous laisse pas mal de possibilités.
Voyez plutôt, à travers cet exemple un peu plus délicat...
Commençons par définir un style par défaut ainsi qu'une classe :
Code : CSS1
2
3
4
5
6
7
8
9 | div
{
background-color: blue;
}
.rouge
{
background-color: red;
}
|
Ajoutons sur notre page un banal
div pour faire nos expériences :
Code : HTML1 | <div id="test">Je suis un cobaye...</div>
|
Faisons-lui subir quelques changements de couleur...
Code : JavaScript1
2
3
4
5
6 | var divTest = document.getElementById("test");
divTest.className = "rouge";
divTest.style.backgroundColor = "green";
divTest.style.backgroundColor = "";
divTest.className = "";
|
Que se passe-t-il exactement ?
- Au début, ni la classe ni le style ne sont définis.
La couleur d'arrière-plan est donc celle définie par défaut : le bleu.
- Ensuite, on définit la classe de notre cobaye.
Celui-ci prend alors la couleur spécifiée dans cette dernière : le rouge.
- On indique enfin une couleur directement grâce à style : elle est donc prioritaire sur la classe.
C'est pourquoi notre cobaye devient vert.
- On supprime cet attribut.
Le cobaye reprend alors la couleur définie dans la classe : il vire au rouge.
- On supprime finalement sa classe.
Il termine donc avec sa couleur par défaut, le bleu.
Déplacer un bloc en JS
Maintenant qu'on a bien joué avec les couleurs, amusons-nous à déplacer un bloc.
Le bloc
Pour cela, commençons par créer un bloc :
Code : HTML1 | <div id="test">Bonjour</div>
|
Et rendons-le bien visible :
Code : CSS 1
2
3
4
5
6
7
8
9
10
11
12
13 | #test
{
background-color: yellow;
text-align: center;
vertical-align: middle;
overflow: hidden;
position: absolute;
left: 0px;
top: 0px;
width: 300px;
height: 150px;
}
|
Les fonctions JS
Les attributs de l'objet
style sont modifiables, mais il ne sont pas pratiques pour connaître la position de l'objet.
On va donc créer deux variables,
x et
y, pour enregistrer la position de notre bloc par rapport à la gauche et au haut de la fenêtre.
Code : JavaScript
Créons également une fonction pour déplacer notre bloc d'un certain nombre de pixels, horizontalement et verticalement.
Code : JavaScript 1
2
3
4
5
6
7
8
9
10 | function deplacer(dx, dy)
{
var bloc = document.getElementById("test");
// on enregistre la nouvelle position
x += dx;
y += dy;
// on place le bloc
bloc.style.left = x + "px";
bloc.style.top = y + "px";
}
|
Les commandes
Il ne nous reste plus qu'à créer des boutons pour déplacer notre bloc dans toutes les directions...
Code : HTML1
2
3
4 | <a href="javascript: deplacer(-10,0)">Gauche</a><br />
<a href="javascript: deplacer(10,0)">Droite</a><br />
<a href="javascript: deplacer(0,-10)">Haut</a><br />
<a href="javascript: deplacer(0,10)">Bas</a>
|