(ré-aiguillé depuis Outils.AideEnCss)
Le but de ce "tutoriel" n'est pas de vous fournir une feuille de style (ou CSS) prête à l'emploi mais au contraire de vous montrer la démarche de "création" de votre propre CSS personnelle.
Lorsque l'on débute il est important d'adopter une bonne méthodologie, d'y aller étape par étape et le profil se construit tout seul.
Hypothèse : Je suppose que votre profil (Options / Apparence de mon profil) est du type "Profil avancé (XHTML pour des CSS 2.1)".
J'ajoute que je développe sous Firefox 2.0.0. Si vous utilisez un autre navigateur il se peut que vous constatiez des différences, plus ou moins notables, par rapport aux impressions que je donne. A vous d'adapter le code en conséquence si vous souhaitez l'exploiter.
Connectez-vous sur votre compte MH puis enregistrez chacune des pages HTML, correspondant aux différentes pages de votre profil : "profil", "événements" et "classement", sur votre disque dur (clic-droit sur la page / Enregistrer sous...).
Remarque : si vous n'êtes pas connecté au moment de sauvegarder, la page de profil ne contiendra pas le lien [Envoyer un message à ce Trõll]. Vous aurez donc du mal à voir les modifications de style s'y rapportant.
Vous devriez maintenant vous retrouver avec 3 fichiers :
PJView.php.html,
PJView_Events.php.html,
PJView_Classements.php.html,
ainsi que leurs répertoires associés (PJView.php_fichiers, PJView_Events.php_fichiers, PJView_Classements.php_fichiers).
Ces répertoires contiennent les éléments nécessaires à l'affichage du profil, dont cette fameuse CSS qui nous intéresse.
Bien évidemment vous pouvez tout à fait renommer ces pages HTML comme bon vous semble, par contre ne modifiez pas le nom des répertoires associés ou leur contenu, les chemins d'accès aux éléments tels que la CSS ou votre avatar ne seraient plus valides.
Vous vous servirez de ces copies pour afficher le résultat de vos modifications sur votre CSS personnalisée, plutôt que de devoir uploader votre CSS à chaque modification pour voir le résultat en ligne.
Ceci étant fait on va pouvoir s'attaquer au coeur du problème.
Habituellement, lorsque vous développez un site web, vous accédez à la fois au code HTML et aux CSS. Il est important de comprendre qu'ici on vous impose l'environnement : le code HTML, vous ne pouvez pas y toucher, c'est MH qui le fournit ! Nous verrons plus tard qu'il existe des moyens pour modifier le contenu affiché, en camouflant certaines données ou en ajoutant du texte, mais partez du principe que vous ne devez pas toucher à ces informations "officielles".
Ouvrez donc maintenant, avec votre éditeur de texte préféré (je vous conseille notepad++ pour un environnement windows), la page HTML du profil (le fichier PJView.php.html si vous n'avez pas changer son nom), pour afficher le code source HTML que nous allons parcourir ensemble, ainsi que le fichier CSS ("numéro de votre troll.css", se trouvant dans le répertoire PJView.php_fichiers), pour appliquer du style aux éléments HTML (je vous proposerais au fur et à mesure de copier-coller des morceaux de code à l'intérieur). Ouvrez enfin, en parallèle, la page HTML du profil mais cette fois avec votre navigateur (Firefox recommandé), pour voir l'application de votre CSS sur le profil et son rendu à l'affichage, au fil des ajouts effectués dans la CSS.
Pour information, extrait de mon fichier PJView.php.html :
<link rel="stylesheet" href="PJView.php_fichiers/80000.css" type="text/css" title="Style personnalisé du troll 80000"> <link rel="alternate stylesheet" href="PJView.php_fichiers/MH_Style_ProfilAvance.css" type="text/css" title="Style de base">
Les lignes qui précèdent indiquent que le profil correspond au "Profil avancé" et que sa CSS se trouve à l'adresse : PJView.php_fichiers/80000.css (stockage local, c'est cette ligne que vous devez modifier si vous changer le nom du répertoire et/ou le nom de la CSS). Celle disponible sur MH se trouve à l'adresse : http://blason.mountyhall.com//Css_PJ/80000.css. Comme les CSS de tous les trolls sont publiques vous savez désormais où chercher l'inspiration !
Si vous ne trouvez pas des lignes similaires dans votre page HTML, je vous renvoie à mon hypothèse initiale, allez modifier le type de votre profil ! (Que de précautions, mais le "problème" a déjà été rencontré...)
Nous ne nous soucierons pas davantage des autres éléments de l'en-tête (contenus entre les balises HTML <head>). Seuls les éléments du profil proprement dit nous intéressent.
On va partir d'une CSS vierge, supprimez donc tout le contenu de votre fichier CSS. Je vous conseille d'ajouter les éléments en même temps que je vous les présente et d'afficher le résultat dans votre navigateur à chaque étape (Actualiser ou F5), pour bien voir le profil évoluer. Un coup d'oeil sur le navigateur vous montre à quoi ressemble un profil avec une CSS vide : les éléments sont affichés les uns à la suite des autres, sur un fond blanc.
En tout premier lieu on regarde le code HTML, afin d'identifier les éléments que l'on va styliser. Je vais prendre mon profil personnel pour exemple.
Voici un premier bloc, extrait du code source HTML :
<body id="PJView">
<h1>Caïn</h1>
<ul id="pjLinks">
<li id="pjLinkProfil"><a href="...">Profil</a></li>
<li id="pjLinkEvents"><a href="...">Evénements</a></li>
<li id="pjLinkClassement"><a href="...">Classements</a></li>
</ul>
<form method="get" action="" id="formView">
<div id="IDPJ">
<label for="ai_IDPJ">Trõll n° : </label>
<input name="ai_IDPJ" id="ai_IDPJ" maxlength="8" value="80000" type="text">
</div>
<div class="submit">
<input name="as_Action" value="Afficher" type="submit">
</div>
</form>
En HTML, le contenu de la page à afficher se trouve entre les balises <body> et </body>. On va donc pouvoir se servir de cet élément pour définir les caractéristiques de plus haut niveau de notre profil (celles qui s'appliqueront à l'ensemble des autres éléments contenus). Il est important de comprendre et de constater l'imbrication des balises (mise en évidence par l'indentation du code), c'est ce qui nous indique quel est le conteneur et quel est le contenu, et ainsi nous permettre de faire référence aux éléments pour les styliser. Rassurez-vous, vous n'aurez besoin d'aucune connaissance HTML pour comprendre ce qui suit.
Cette caractéristique d'imbrication a également un effet sur les styles que vous allez appliquer : en cas de définition multiple, le style du contenu l'emporte sur celui du conteneur. Exemple: si vous définissez une couleur de police pour l'élément body et que vous en définissez une autre pour l'élément h1 (contenu dans body), c'est cette dernière couleur qui va prendre le pas sur la première lors de l'affichage du titre h1... Dans le cas des marges, elles s'ajoutent par contre.
Comme vous m'avez l'air impatient on va déjà ajouter un élément de style à notre CSS. Copiez-coller le code suivant dans votre fichier CSS. Enregistrez et actualisez l'affichage de votre navigateur. Les commentaires du code (texte compris entre les commandes "/*" et "*/") vous indiquent l'effet désiré.
body {
background-color: #FEFEE2; /* Fond couleur "blanc cassé" car le blanc fait mal aux yeux ! */
border: 1px solid #000; /* Applique un cadre pour distinguer clairement ce qu'on manipule */
width: 732px; /* Définit une largeur fixe à l'élément, pour pouvoir le centrer sur la page... */
margin: 0 auto; /* Petite astuce CSS pour centrer un élément (nécessite de fixer la largeur !) */
}
Constatez la manière dont on définit le style pour un type d'élément HTML, la syntaxe employée :
"nom de l'élément" {
"propriété CSS": <valeur>;
...
}
Pour information, le site MH ouvre les profils dans des fenêtres de 750 pixels de large pour 550 de haut. Néanmoins, dans les 750px de large il faut aussi compter la largeur de la barre de défilement, qui réduit d'autant l'affichage. Il ne faudrait pas avoir une barre de défilement horizontale en bas de la fenêtre, beurk ! On se laisse donc un peu de marge en appliquant une largeur de 732 pixels (valeur purement arbitraire)...
C'est habituellement dans le body que l'on définit la police de caractère utilisée pour tout le reste du document (ça évite ainsi de répéter la définition), sans quoi le navigateur impose son style par défaut. Je vous laisse ici faire votre choix quant à la police à utiliser, la taille des caractères, etc. Sachez toutefois qu'il se peut que les autres utilisateurs ne disposent pas des polices que vous avez choisi et donc que le navigateur appliquera le style par défaut. Suivant le système d'exploitation, les polices installées, le choix peut s'avérer assez restreint. Je vous invite à aller faire un tour sur cette page pour voir les possibilités qui s'offrent à vous.
Poursuivons maintenant la lecture de notre code HTML...
<h1>Nom de votre Troll</h1>
Ce code représente le nom de votre troll. Vous allez pouvoir le styliser en appliquant des attributs CSS à la balise h1. Par exemple, on va changer la couleur de la police pour du "vermillon" (voir liste de couleurs wikipedia). Copiez-collez le code ci-dessous à la suite de votre CSS :
h1 {
background-color: #FDF1B8; /* Fond couleur "crème", pour faire ressortir l'élément */
color: #DB1702; /* Applique un peu de couleur à la police de caractères */
text-align: center; /* Centre le texte "nom du troll" */
}
(Aller-retour vers le navigateur pour voir l'effet de la modification)
Je vous laisse toujours le soin de choisir la police qui vous plait, la taille des caractères etc. Petite remarque quant à la couleur de la police, le rendu à l'affichage est influencé aussi par le fond appliqué !
Pour de plus amples paramètres de style je vous invite à aller jeter un oeil au sommaire de référence CSS de SELHTML. Rassurez-vous, nous en aborderons quelques uns au cours de ce "tutoriel".
Attention : tous les autres éléments de la page se trouvant dans des balises de type "h1" seront également affectés par le style ! On s'assure donc en parcourant la page qu'il n'y a pas d'autres balises de ce type (Ctrl+f "h1")... Ouf, il n'y en a pas d'autres ! Evidemment, il s'agit du formattage du titre de plus haut niveau mais soyez-en conscients lorsque vous manipulerez d'autres balises, plus courantes. Vous pouvez aussi choisir, en connaissance de cause, d'appliquer un style qui se répercutera sur plusieurs éléments sur la page, il faut juste que vous soyez conscients de ce que vous faîtes.
On repart vers le code HTML :
<ul id="pjLinks">
<li id="pjLinkProfil"><a href="...">Profil</a></li>
<li id="pjLinkEvents"><a href="...">Evénements</a></li>
<li id="pjLinkClassement"><a href="...">Classements</a></li>
</ul>
Ces quelques lignes forment une liste énumérative HTML qui représente le menu de navigation du profil, les liens vers les différentes pages. Je vous renvoie au sommaire de référence HTML de SELFHTML pour les explications des futures balises recontrées, vous avez compris la manoeuvre maintenant :)
Comme nous l'avons vu avec le nom du troll, nous pourrions définir un style à appliquer aux balises ul (si l'on veut styliser l'ensemble des éléments de la liste énumérative, par exemple pour un positionnement du "bloc" dans sa globalité) ou li (si l'on s'intéresse aux éléments, lignes, de la listes) ou encore li a (pour le style des liens en eux-mêmes, police et attributs liés). Toutefois, la remarque faîte précédemment s'applique ici : le profil comporte d'autres listes énumératives ! (distinctions, équipement...). On ne peut donc pas procéder de cette manière sans affecter également ces autres listes.
Heureusement, le concepteur avait prévu le coup : il a attribué des "identifiants" à la liste et à chacun des liens, de manière à pouvoir y accéder indépendamment. Par exemple, pour styliser le "menu de navigation" (Profil | Evénements | Classements) voici comment faire :
ul#pjLinks {
background-color: #FDF1B8;
list-style-type: none; /* Supprime les puces en face des liens */
padding-left: 0; /* Annule l'indentation automatique de la liste, cale le texte à gauche */
text-align: center; /* Centre le texte vis à vis du conteneur (la liste "pjLinks") */
}
pjLinks est l'identifiant (id="pjLinks) de la liste énumérative (ul, l'élément global, conteneur des liens). On accède donc en CSS à cet élément via la commande ul#pjLinks (voir Formats indépendants).
Note : text-indent: 0; qui semblerait plus logique que padding-left: 0; n'a malheureusement aucun effet.
Les liens restent en colonne, on préférerait les avoir en ligne, quoi de plus facile ! Cette fois on "stylise" les éléments de la liste (li) :
ul#pjLinks li {
display: inline; /* Affiche les différents éléments du conteneur sur une même ligne */
padding: 10px; /* Donne un peu d'espace aux liens, applique des "marges intérieures" */
}
Notez bien la manière dont on accède aux éléments pour être en mesure de le faire vous-mêmes quelque soit le code HTML rencontré !
On aimerait maintenant styliser nos liens...
ul#pjLinks a {
text-decoration: none; /* Supprime le style par défaut "souligné" des liens */
font-weight: bold; /* Applique l'effet "gras" sur la police */
color: #9E0E40;
}
ul#pjLinks a:hover { /* L'attribut "hover" s'applique aux liens survolés à la souris */
color: #ED7F10; /* On change la couleur lors des "survols de liens" */
}
Remarque : ul#pjLinks li a et ul#pjLinks li a:hover seraient des commandes encore plus précises...
N'oubliez pas qu'en supprimmant le style par défaut des liens, leur rôle de lien n'apparait plus de manière si flagrante (seul le changement de pointeur laisse encore présager que ce sont effectivement des liens). Reproduire le comportement habituel de lien sera apprécié des utilisateurs. Ici on change la couleur lors du survol : l'attribut ":hover" est là pour ça. Pour d'autres attributs, voir par ici...
Pour accéder à un lien en particulier on utilise son identifiant, par exemple pour le lien "Profil" :
ul#pjLinks li#pjLinkProfil a {
/* attributs à définir */
}
De notre premier bloc de HTML à analyser il nous reste le formulaire Trõll n° : [80000] [Afficher] à styliser.
<form method="get" action="" id="formView">
<div id="IDPJ">
<label for="ai_IDPJ">Trõll n° : </label>
<input name="ai_IDPJ" id="ai_IDPJ" maxlength="8" value="80000" type="text">
</div>
<div class="submit">
<input name="as_Action" value="Afficher" type="submit">
</div>
</form>
Ce formulaire nous gêne un peu alors on va le mettre dans un coin. Et pour le rendre plus pratique, pour que le visiteur puisse changer de profil de troll quel que soit l'endroit où il se trouve dans la page on va le fixer...
#formView {
border: 1px solid #000; /* On encadre, jouer avec d'autres types de bordures... */
position: fixed; /* Positionnement absolu et fixe (lors du défilement) */
top: 0; /* Fixe le formulaire dans le coin, en haut... */
right: 0; /* ... à droite. */
padding: 10px; /* Eloigne une peu les éléments du bord */
text-align: center; /* Centre les éléments dans le "cadre" */
width: 180px; /* Définit une largeur fixe à l'élément, une idée derrière la tête... */
}
#IDPJ label {
/*display: none; /* Fait disparaitre l'intitulé "Trõll n° : " */
}
#IDPJ input {
width: 50px; /* Largeur de la zone de saisie du "numéro" du troll à afficher */
text-align: center; /* Centre le "numéro du troll" dans le champ <input> du formulaire */
}
form#formView .submit {
margin-top: 10px; /* "Décolle" le bouton "Afficher" des éléments du dessus */
}
form#formView .submit input {
background-color: #FDF1B8; /* Applique un fond au bouton "Afficher" */
}
Pour accéder aux éléments de "classe", ex: <div class="submit">, on utilise les commandes du type .[nom de l'élément], ex: .submit (voir Formats pour les classes).
Pour savoir quel objet manipuler je vous conseille de procéder méthodiquement sinon vous pourriez rapidement vous perdre dans vos modifications : toujours commencer par l'élément le plus englobant pour descendre vers ceux contenus, en démarrant par les modifications de positionnement. Les subtilités et détails peuvent attendre...
Vous me voyez aussi parfois utiliser margin d'autres fois padding, tout dépend de l'objet que l'on manipule et de l'effet désiré, amusez-vous avec les deux en attribuant différentes valeurs et constatez si l'affichage vous convient.
La suite du code HTML nous présente la description du troll proprement dîte (une partie seulement est affichée ici) :
<h2>Son Profil Général</h2>
<dl id="profil">
<dt class="blason">Blason</dt>
<dd class="blason"><img src="..." id="blason" alt="Blason du troll n°80000"></dd>
<dt class="numero">N°</dt>
<dd class="numero">80000
<span id="envoiMessage">
<a href="...">[Envoyer un message à ce Trõll]</a>
</span>
</dd>
<dt class="distinctions">Distinctions</dt>
<dd class="distinctions"><ul><li>[Tueur de Crascs Maexus]</li></ul></dd>
<dt class="maladie">Maladie</dt>
<dd class="maladie"><ul><li>[Immunisé à la Peste Scrofuleuse]</li></ul></dd>
<dt class="race">Race</dt>
<dd class="race">Kastar</dd>
<dt class="creation">Date de création</dt>
<dd class="creation">04/07/2006 19:47:14</dd>
<dt class="email">Adresse E-mail</dt>
<dd class="email"> - </dd>
<dt class="niveau">Niveau</dt>
<dd class="niveau">36</dd>
<dt class="guilde">Guilde</dt>
<dd class="guilde" id="nomGuilde"><a href="...">les ElecTrolls Libres</a></dd>
<dd class="guilde" id="rangGuilde">[Mountypédiatroll]</dd>
<dt class="mouches">Mouches</dt>
<dd class="mouches">35</dd>
<dt class="meurtres">Nombre de Meurtres</dt>
<dd class="meurtres">144</dd>
<dt class="deces">Nombre de Décès</dt>
<dd class="deces">6</dd>
h2 (balise de titre de niveau 2) renferme l'intitulé "Son Profil Général", on retrouve plus loin dans le code source une autre balise de ce type : <h2 id="descriptionTitre">Description</h2>. Je décide de prendre la liberté de masquer ces deux titres, vu leur évidence...
On constate ensuite que la description du profil s'articule autour des balises <dl><dt><dt>. Après la consultation d'un manuel de référence HTML, je découvre qu'il s'agit de la syntaxe d'une liste de définitions. J'apprends que les balises <dt> symbolisent les "termes" à définir, <dd> les définitions. Maintenant que j'ai compris le fonctionnement je vais pouvoir manipuler ces éléments.
h2 {
display: none; /* Masque les titres "Son Profil Général" et "Description" */
}
#profil {
background-color: #FDF1B8;
margin-top: 20px;
padding: 20px; /* "Décolle" la liste des bords */
line-height: 20px; /* Donne davantage d'air à la liste */
}
On constate que les intitulés et leurs valeurs ("Race" et "Kastar") ne sont pas sur les mêmes lignes, et puis ça manque un peu de relief tout ça !
dt {
float: left; /* Pour que les informations se trouvent sur la même que leur intitulé */
font-weight: bold; /* Fait ressortir les intitulés de la description, génère un décalage */
margin-top: -1px; /* Ré-alignement dt - dd */
}
dd {
color: #DB1702; /* Un peu de couleur... */
text-indent: 10px; /* Décolle un peu les valeurs des intitulés */
}
float: left; change le cours normal du texte (lignes les unes en dessous des autres). On obtient ainsi que les éléments qui suivent la cible (l'élément sur lequel on applique cette propriété) l'entourent par la droite.
On souhaite dans notre cas que les dd se trouvent directement à droite des dt, on applique donc cette propriété aux dt qui convient parfaitement à l'effet voulu. Evidemment je vous épargne toute la recherche préalable en vous donnant directement la solution, en pratique vous devrez parcourir le manuel de référence CSS à la recherche d'une propriété qui convienne à votre besoin...
Une petite mise en garde : les éléments flottant sont délicats à manipuler, un rien et la mise en page vole en éclats ! Soyez donc méthodiques dans vos modifications (l'une après l'autre, en constatant le résultat à chaque ajout) pour voir leur incidence et déceler quel est le coupable en cas de catastrophe.
Après avoir appliqué l'effet "gras" aux dt on se rend compte que cela génère un léger décalage vertical, on y remédie immédiatement à l'aide d'un margin-top: -1px;. Ajouter les propriétés CSS une à une pour bien voir leur incidence sur l'affichage.
Il ne nous convient pas tel qu'il est placé, on le préférerait calé à droite :
dt.blason {
display: none; /* Fait disparaitre le texte "Blason", tant pis pour l'acessibilité... */
}
dd.blason {
text-align: right; /* Plaque l'image de votre avatar à droite */
float: right; /* Pour que la description du profil "enveloppe" le blason par la gauche */
}
On applique une nouvelle fois la propriété "float", mais cette fois dans l'autre sens, pour que le texte suivant le blason se poursuive sur la gauche de ce dernier.
Un élément qui tend à être négligé voir ignoré. Il n'y a pas de raisons !
dd.numero span#envoiMessage {
display: block; /* Affiche le lien "[Envoyer un message à ce Trõll]" sur une nvelle ligne */
}
dd.numero span#envoiMessage a {
text-decoration: none; /* Mêmes idées que pour les liens "Profil | Evénements | Classements" */
color: #9E0E40;
}
dd.numero span#envoiMessage a:hover {
color: #ED7F10;
}
On l'a déjà vu avec le texte du blason, on peut "masquer" ou plutôt empêcher l'affichage de certains éléments du profil. J'ai choisi, pour ma part, de ne pas dévoiler mon adresse email dans mon profil (standard). Cette ligne se révèle donc inutile, je décide de la "masquer". Je vous mets en garde cependant, vous êtes passibles de sanctions lorsque vous masquer, délibérément ou non, des informations officielles de votre profil. Disons que l'on prend peu de risques ici...
.email {
display: none; /* une ligne de gagnée pour alléger le profil */
}
dd.guilde a {
text-decoration: none; /* On traite toujours de la même manière les liens... */
color: #9E0E40;
font-weight: bold; /* Fait ressortir un peu plus le nom de la guilde */
}
dd.guilde a:hover {
color: #ED7F10;
}
dt.guilde, dt.mouches, dt.meurtres, dt.deces, dt.equipement {
margin-top: 0px; /* De nouveau un décalage à rattraper, à cause du "gras" sur dd.guilde a */
}
Pas grand chose à dire là-dessus, si ce n'est que l'effet "gras" a encore décalé le texte se trouvant en dessous (en fait cela rattrape plutôt le margin-top: -1px; que nous avons défini plus haut mais si je vous demande de modifier du contenu précédent on ne va plus s'y retrouver)...
dt.distinctions, dt.maladie, dt.equipement, dt.possessions {
float: none; /* Pb avec les listes "distinctions", "équipement" et "possessions" réglé ! */
padding-left: 2px; /* Rattrape le décalage provoqué par le précédent "padding" */
}
dd.distinctions ul, dd.maladie ul {
list-style-type: none; /* On supprime les puces de la liste des "distinctions" */
padding: 2px 0; /* Rattrape une indentation un peu trop généreuse */
}
dd.equipement ul, dd.possessions ul {
padding: 2px 0; /* On garde les puces mais on re-cale à gauche */
}
dd.equipement li span.magie {
color: #9E0E40; /* On fait ressortir les templates de notre équipement */
font-weight: bold;
}
dd.possessions a {
text-decoration: none; /* On change le style de nos bidouilles */
color: #DB1702;
}
dd.possessions a:hover {
color: #ED7F10;
}
.numero, .race, .creation, .niveau, .guilde, .mouches, .meurtres, .deces {
padding: 2px; /* Donne un peu d'air à la liste */
}
Rappelez-vous, un coup d'oeil au code source HTML d'abord. Vous auriez pensé au span.magie sans ça ? Hum...
On termine en donnant un peu d'espace à la liste, un peu tassée sur elle-même jusqu'ici.
On passe maintenant à la partie "officieuse", celle que vous définissez vous-même comme vous l'entendez en BBCode :
<h2 id="descriptionTitre">Description</h2>
<p id="disclaimer">[Toutes les informations ... ne sont donc pas officielles]</p>
<div id="description">
blabla
</div>
Pas besoin de bcp de personnalisation de ce côté là, tout peut être fait directement dans le "code source", puisque vous y avez accès sur MH via Options / Description.
#disclaimer { /* "Toutes les informations présentées en dessous de cette ligne..." */
font-size: x-small;
font-weight: normal;
text-align: center;
}
#description { /* Zone "Description" */
background-color: #FDF1B8;
padding: 20px;
}
Et enfin la dernière partie du code source qui nous intéresse :
<div id="styleSwitcher"> <a href="javascript:void(0);" onclick="rotateStyleSheet();">Changer d'apparence</a> <script src="PJView.php_fichiers/event_FF.js" id="monScript" language="JavaScript"></script> </div>
#styleSwitcher { /* Bouton "Changer d'apparence" */
margin-top: 20px;
text-align: center;
}
#styleSwitcher a {
text-decoration: none;
color: #DB1702;
}
#styleSwitcher a:hover {
color: #ED7F10;
}
A la réflexion, le bouton de changement d'apparence n'est pas très pratique en l'état. Il le serait davantage si l'utilisateur pouvait y avoir accès facilement, d'autant plus si votre profil est vraiment original ! Devoir aller tout en bas de la page est déjà trop pénible dans certains cas... Je propose donc de remplacer le code précédent par :
#styleSwitcher {
border: 1px solid #000;
position: fixed;
top: 80px;
right: 0;
padding: 10px;
text-align: center;
width: 180px;
}
#styleSwitcher a {
text-decoration: none;
color: #DB1702;
}
#styleSwitcher a:hover {
color: #ED7F10;
}
Ainsi, comme le formulaire de changement de profil de troll, le lien de changement d'apparence est fixe par rapport au défilement de la page.
Voilà, on a maintenant une page de profil bien structurée, il ne vous reste plus qu'à l'habiller suivant vos convenances : couleurs, police, images, etc.
Puisque vous avez eu le courage d'arriver jusque là, je vous mets le lien vers la page qui contient tout le code CSS que j'ai disséminé plus haut ExempleDeStructureCSS.
Il existe d'autres alternatives au "positionnement" que je vous ai présenté. En réalité j'ai juste joué avec les propriétés float pour modifier le cours du texte. On pourrait très bien vouloir changer l'ordre d'apparition des informations ou bien encore rassembler certaines infos dans des endroits précis du profil...
La solution : le positionnement absolu. C'est à dire fixer l'emplacement d'un élément à des coordonnées fixes : à 50px du haut, 20px à droite... Malheureusement un problème se pose alors : comment conserver un profil centré avec un tel positionnement ? On va voir que c'est possible en jouant avec les marges, avec certaines limitations toutefois (dont vous vous rendrez rapidement compte en jouant avec la taille de votre fenêtre d'affichage).
Pour cette méthode de placement par "positionnement absolu", je vous suggère de n'afficher que les éléments que vous avez déjà placé et celui sur lequel vous êtes en train de travailler, ça évitera de parasiter votre "recherche artistique" :)
Commencer par sauvegarder votre CSS si vous l'avez déjà personnalisé, sinon supprimer sans crainte tout le code qui se trouve sous :
h2 {
display: none;
}
Vous pourrez toujours récupérer le code original depuis la page ExempleDeStructureCSS...
Ainsi fait, on ajoute maintenant le code qui va masquer les éléments sur lesquels on ne va pas travailler :
.numero, .distinctions, .maladie, .race, .creation, .niveau, .guilde, .mouches, .meurtres, .deces, .equipement, .possessions {
display: none;
}
On ajoute quelques définitions issues de la première CSS, que l'on reprend quasi identiques :
#profil {
background-color: #FDF1B8;
min-height: 400px;
}
#disclaimer {
font-size: x-small;
font-weight: normal;
text-align: center;
}
#description {
background-color: #FDF1B8;
padding: 20px;
}
#styleSwitcher {
border: 1px solid #000;
position: fixed;
top: 80px;
right: 0;
padding: 10px;
text-align: center;
width: 180px;
}
#styleSwitcher a {
text-decoration: none;
color: #DB1702;
}
#styleSwitcher a:hover {
color: #ED7F10;
}
On s'occupe du blason pour commencer. J'ai décidé de le laisser à sa place là où nous l'avions disposé, les 2 méthodes de positionnement ne sont pas incompatibles ! On pourrait tout aussi bien le caler à gauche, le centrer, etc. A vous de voir ce que vous préférez.
dt.blason, .email {
display: none;
}
dd.blason {
text-align: right;
padding-top: 50px;
padding-right: 20px;
}
Ceci fait, on met à jour le "code de masquage" pour faire apparaitre le prochain élément à placer : le numéro.
.distinctions, .maladie, .race, .creation, .niveau, .guilde, .mouches, .meurtres, .deces, .equipement, .possessions {
display: none;
}
Petite réflexion au sujet du numéro : j'ai choisi, en toute conscience, de ne pas l'afficher. En effet, il est déjà présent dans le formulaire de changement de profil de troll qui se trouve dans le coin droit de la fenêtre et se retrouve donc redondant. Il pourrait également figurer sur votre bannière, en image de fond de votre élément h1...
Toutefois, on ne va pas simplement faire un display: none; qui aurait pour effet de masquer le lien "[Envoyer un message à ce Trõll]", il va falloir ruser ! On va utiliser la propriété visibility.
.numero {
visibility: hidden;
}
dd.numero span#envoiMessage {
visibility: visible;
position: absolute;
margin-left: 0;
top: 140px;
left: 0;
width: 100%;
text-align: center;
}
dd.numero span#envoiMessage a {
text-decoration: none;
color: #9E0E40;
}
dd.numero span#envoiMessage a:hover {
color: #ED7F10;
}
Une fois placé correctement (facile ici, j'ai déjà tout fait !), on passe à la race et au niveau.
Nouvelle mise à jour du masque : race et niveau
.distinctions, .maladie, .creation, .guilde, .mouches, .meurtres, .deces, .equipement, .possessions {
display: none;
}
En ce qui concerne la race et le niveau, on aimerait voir s'afficher : "[Race de votre troll] niveau [Niveau de votre troll]" Je vous le dis tout de suite on y va à tâtons pour trouver les bonnes valeurs ! Mais ça se fait relativement vite tout de même. J'ajouterai que c'est maintenant à vous de mettre la main à la pâte et de vous adapter à votre blason ! Taille, couleur (le texte doit pouvoir être lu sans difficulté...), etc.
dt.race {
display: none;
}
dd.race {
position: absolute;
margin-left: 0;
top: 200px;
left: 0;
width: 100%;
text-align: center; /* A ce niveau on a la "race" centrée... */
margin-left: -320px; /* Il nous suffit alors de décaler dans la direction souhaitée grâce aux marges */
}
dt.niveau {
position: absolute;
margin-left: 0;
top: 200px;
left: 0;
width: 100%;
margin-left: -260px;
text-align: center;
text-transform: lowercase; /* en minuscules... */
}
dd.niveau {
position: absolute;
margin-left: 0;
top: 200px;
left: 0;
width: 100%;
text-align: center;
margin-left: -216px;
}
Nouvelle mise à jour du masque : mouches, meurtres et deces
.distinctions, .maladie, .creation, .guilde, .equipement, .possessions {
display: none;
}
Et on ajoute les définitions :
dd.mouches {
position: absolute;
margin-left: 0;
top: 220px;
left: 0;
width: 100%;
margin-left: -334px;
text-align: center;
}
dt.mouches {
position: absolute;
margin-left: 0;
top: 220px;
left: 0;
width: 100%;
margin-left: -280px;
text-align: center;
text-transform: lowercase;
}
dt.meurtres {
position: absolute;
margin-left: 0;
top: 260px;
left: 0;
width: 100%;
text-align: center;
margin-left: -264px;
}
dd.meurtres {
position: absolute;
margin-left: 0;
top: 280px;
left: 0;
width: 100%;
text-align: center;
margin-left: -280px;
}
dd.meurtres:after {
content:" à mon actif !";
}
dt.deces {
position: absolute;
margin-left: 0;
top: 320px;
left: 0;
width: 100%;
text-align: center;
margin-left: -277px;
}
dd.deces {
position: absolute;
margin-left: 0;
top: 340px;
left: 0;
width: 100%;
text-align: center;
//margin-left: -340px;
margin-left: -294px;
}
dd.deces:after {
content:" incidents...";
}
Remarquez les "ajouts" via les propriétés after (il existe aussi before). (Malheureusement?) IE ne supporte pas ces ajouts... Essayez donc de ne pas en abuser sous peine de graves problèmes de compatibilité ! Et puis n'oubliez pas que vous n'êtes pas *autorisé* à modifier les informations officielles...
Je pense que je peux m'arrêter là, vous avez compris le principe. Je vous laisse le soin de placer le reste des éléments du profil.
Un dernier coup de pouce concernant le placement de l'équipement : pour récupérer indépendamment les éléments, si jamais vous voulez les positionner en fonction de votre avatar par ex., voici les commandes, des pieds à la tête :
dd.equipement ul li { }
dd.equipement ul li+li { }
dd.equipement ul li+li+li { }
dd.equipement ul li+li+li+li { }
dd.equipement ul li+li+li+li+li { }
dd.equipement ul li+li+li+li+li+li { }
Comme vous le voyez, on parcourt les "lignes" de liste énumérative. Attention aux équipements comportant une arme à deux mains ! (le bouclier étant absent, je vous laisse deviner les conséquences sur les commandes d'accès aux équipements succédant l'arme...)
Une remarque au sujet du positionnement absolu : le profil est "vivant", votre positionnement non, il est figé, il ne s'adaptera pas aux évolutions conséquentes de votre profil ! Il vous faudra donc probablement l'adapter à des moments clés de la vie de votre troll :
Un autre inconvénient c'est que l'alignement n'est pas toujours super précis...
N'oubliez surtout pas de styliser la page événements ! (et accessoirement celle de classement aussi) Elle a un intérêt capital pour les autres joueurs (des sanctions se perdent pour les joueurs rendant illisibles ces informations, plus ou moins volontairement d'ailleurs...).
Je vous conseille de partir d'une CSS vierge et d'ajouter petit à petit le style aux éléments qui vous intéressent, c'est ce qui aura davantage de chance de laisser cours à votre imagination et vous amenera à un profil vraiment original !
Sinon, la CSS MH_Style_ProfilAvance.css vous fournit quelques éléments de personnalisation. N'hésitez pas à "jouer" avec : changez les valeurs et regardez ce qui se passe en rafraichissant la page HTML correspondante, c'est le meilleur moyen d'apprendre ! Pour aller plus loin vous aurez besoin de notions en CSS et pour cela je vous recommande les pages suivantes : CSS de zéro, qui est un excellent tutoriel pour débuter, et le manuel de référence CSS qui constitue un excellent aide-mémoire que je n'ai pas hésité à citer de nombreuses fois.
Je vous conseille également les sites : Alsacreations et Openweb pour davantage de documentation et bien sûr le site du W3C.
Maintenant à vous de jouer et je ne saurai que trop vous conseiller de vous armer de patience !
En espérant éviter à certains de longues et fastidieuses recherches sur le sujet...
Bon courage :)
border: 1px solid #000;
!important est ignorée par IE. On peut donc s'en servir pour lui faire ignorer certaines propriétés...
| Caïn |