Gestion dynamique des liens du menu barre
Pour dynamiser vos blogs dans le cadre de mes labs, j'ai sélectionné quelques procédures intéressantes d'utilisations du Javascript avec le DOM (Document Objet Model), cette alliance permet d'accéder un peu par tout dans une page Web et de la personnaliser. Pour ceux qui pratiquent bien le CSS, ils y trouveront un plus qui va nettement améliorer leurs possibilités.
Je précise que ces codes sont à mettre :
- soit dans un article en mode HTML avec le nouveau composeur (actif sur l'article uniquement)
- soit dans la bordure gauche/droite (actif sur tout le blog)
- ou pour ceux qui connaissent le système de fichier externe lié
Dans un premier temps, j'aimerai avoir des testeurs, pour pouvoir, par la suite, réaliser un tuto plus détaillé, si nécessaire.
Mais surtout essayez et donnez-moi votre avis, d'avance merci.
Les codes que je vous indique, sont utilisés dans cet article, vous pouvez donc voir le résultat dans le menu barre ci dessus.
Vous pouvez copier le code encadré, les textes en vert sont des commentaires que vous pouvez laisser, mais les textes en rouge sont à remplacer :
var texteNvLien = document.createTextNode(" texte du lien ");
nvLien.href =" adresse du lien ";
nvLien.title = " message de la bulle ";
Code pour créer un lien supplémentaire à la barre
<script type="text/javascript">// <![CDATA[
// sélection du bloc HTML concerné, partie barre
var menu_barre = document.getElementById("barre");
// création des nouveaux éléments HTML
var nvElt = document.createElement("li");
var nvLien = document.createElement("a");
// création du texte du nouveau lien
var texteNvLien = document.createTextNode("Bricabrac");
// pour supprimer les puces
nvElt.style.listStyleType = "none";
// création des attributs du nouveau lien
nvLien.href ="http://bricabrac.blog4ever.com/blog/index-490.html";
nvLien.title = "Visitez mon autre blog BRICABRAC";
// mise en place du texte du lien
nvLien.appendChild(texteNvLien);
// mise en place du lien au nouvel élément de la liste
nvElt.appendChild(nvLien);
// mise en place du nouvel élément à la liste
menu_barre.appendChild(nvElt);
// ]]></script>
Comme un nouvel élément de la liste est créé à chaque nouveau lien, pour gérer les puces vous devez ajouter une ligne de code pour chaque lien :
nvElt.style.listStyleType = "none"; // pour supprimer les puces
ou bien sûr, mettre le style que vous souhaitez : square, circle, disc ou autre.
Un petit plus à chaque lien mettre une bulle avec messsage, qui s'affiche au survol de la souris.
lien0.title = " Message du premier lien ";
lien1.title = " Message du deuxième lien ";
lien2.title = " Message du troisième lien ";
lien3.title = " Message du quatrième lien ";
Code pour la création des bulles messages s'affichant au survol de la souris.
***
Plus utile pour certains blogs, modifier le texte des liens qui s'affichent automatiquement :
Accueil Articles Photos Forum
Dans cet article, j'ai modifié que 2 des liens , le deuxième(lien1) et le troisième(lien2).
Petite explication en informatique, si des éléments sont numérotés, le premier est toujours le zéro, c'est pour cette raison que j'ai nommé la variable (var), du premier lien "lien0".
Donc si vous avez 4 liens : lien0, lien1, lien2, lien3
Pour chaque lien
lien#.style.width = " largeur du lien sile texte est long ";
lien#.firstChild.data = " texte du lien ";
Si vous avez plus de 4 liens, il faudra affecter chaque lien à une variable :
var lien4 = menu_barre.getElementsByTagName("a")[4];
var lien# = menu_barre.getElementsByTagName("a")[#];
Les # représentent les chiffres que vous créerez si nécessaire.
Code pour modifier le textes des liens existants.
// sélection du bloc HTML concerné, partie barre
var menu_barre = document.getElementById("barre");
// Affectation variables des liens existants
var lien0 = menu_barre.getElementsByTagName("a")[0];
var lien1 = menu_barre.getElementsByTagName("a")[1];
var lien2 = menu_barre.getElementsByTagName("a")[2];
var lien3 = menu_barre.getElementsByTagName("a")[3];
// liens textes modifiés
lien1.style.width = "150px";
lien1.firstChild.data = "Mes articles";
lien2.style.width = "150px";
lien2.firstChild.data = "Album Photos";
// ]]></script>
Vous pouvez modifier totalement un lien existant :
// remplacement d'un lien automatique par un autre de votre choix
lien2.firstChild.data = " texte du lien ";
lien2.href =" adresse du lien ";
lien2.title = " message au survol ";
- changer le style du texte de chaque lien, donc leur personnalisation totale
// modifié en direct le style géré par votre CSS
lien0.style.color = "#339966";
lien0.style.fontSize = "16pt";
lien0.style.fontFamily= "Comic sans MS";
lien0.style.fontWeight= "bold";
Remarque : au passage, je vous signale que les noms des styles ayant des tirets, il faut remplacer le tiret en mettant une majuscule à la première lettre du deuxième mot...
exemple : changer font-size en fontSize
Je pense que vous comprenez, maintenant, les possibilités qui s'offrent à vous.
Voir également les articles :
- pour créer 2 liens supplémentaires
- mettre une image de fond différente à chaque lien
...



Commentaires
site/blog
le 27-12-2010 à 10:45:06
Je verrai plus tard pour mettre des images différentes.
Merci pour ton travail.
Simon
site/blog
27-12-2010 à 23:07:37
Merci pour ton test, j'ai donc complété mon code et mis une annotation pour la gestion des puces des éléments ajoutés.
Bonne continuation
site/blog
le 31-05-2011 à 21:02:05
le 01-06-2011 à 10:58:00
Ce n'est pas du CSS.
J'ai tout expliqué dans le début de l'article :
"Je précise que ces codes sont à mettre :
- soit dans un article en mode HTML avec le nouveau composeur (actif sur l'article uniquement)
- soit dans la bordure gauche/droite (actif sur tout le blog)
- ou pour ceux qui connaissent le système de fichier externe lié"
Bonne continuation
site/blog
le 21-08-2011 à 13:57:42
Merci d'avance.
Speedo
le 21-08-2011 à 14:14:18
En principe si tu n'as pas fait d'erreur, le texte doit s'afficher comme les autres liens.
Il faudrait que je vois ton code mais je m'absente jusqu'à ce soir.
Essaie de mettre une ligne de plus, dans le code de création du lien pour la taille de la font pour ce lien.
Exemple : si c'est le cinquième lien
>>> lien5.style.fontSize = "15pt";
Bonne continuation
site/blog
le 21-08-2011 à 14:27:49
Voici mon code:
//
Speedo
le 21-08-2011 à 20:32:03
J'ai supprimé ton dernier commentaire.
Les commentaire ne sont pas fait pour ça.
J'étais absent il fallait attendre. Comme je l'avais pensé tu avais une erreur dans ton CSS, tu avais mis la propriété "font-size" dans la règle "ul".
C'est sur le texte du lien que s'applique le style donc dans la règle "#barre a"
C'est fait et ça fonctionne.
Bonne continnuation
site/blog
le 22-08-2011 à 10:09:19
Et je trouve Diztest génial !!!
site/blog
le 20-09-2011 à 19:51:24
J'ai mis en bordure de page le code pour changer l'intitulé des liens existants mais rien ne se passe. Qu'ai-je oublié ou mal fait stp ?
Vie
le 20-09-2011 à 21:05:26
Je crois que ton problème est résolu, il me semble avoir vu les titres changés dans le menu de gauche.
Bonne soirée
site/blog
le 24-10-2011 à 16:05:16
Super ce tuto, je le testerai tres rapidement, mais j'aurai une question avant.
Si je suis en version gratutie, je dois donc mettre ce code dans l'éditeur d'un article c'est ca ?
Du coup si je souhaite modifier mon menu du haut (entre le logo et le contenu) je dois recopier le code dans CHAQUE article ?
Merci d'avance.
le 26-11-2011 à 13:29:25
Pour une débutante comme moi, ton site est une mine d'or.
Mille fois merci !
Marisa
site/blog
le 09-05-2012 à 19:58:52
Cordialement,