C'est inadmissible

   Quoi ? Bah j'en sais rien, c'était juste pour tester la fonctionnalité "je râle parce que j'ai le droit" comprise dans le pack Premium.
   Ça marche po va falloir que j'aille poster dans Bugs

  Parce que j'ai le droit aussi (et pas seulement parce qu'il le demande sur son site où je pêche pas mal de bouts de css que j'accommode à ma sauce, miam , et c'est pas fini), le lien vers LA référence en matière de bidouillage css, marque-pagez-moi ça et tout de suite, hein !

CSSplay (les expériences de Stu Nicholls)

   Bon là pour le moment je suis en train d'essayer de faire un joli menu accordéon, mais c'est pas facile et ça prend du temps de finir les restes du réveillon, donc il sera pas fini avant l'année prochaine. Le menu, pas le réveillon.

   Pour vous faire patienter, un petit rien qui va nous permettre d'explorer un peu plus avant les fonctionnalités généreusement mises à notre disposition par M'dame Overblog. Vous avez déjà essayé de cliquer, juste par curiosité, sur la petite flèche à côté de "Style" ? Je suis sûr que non
   Ça y est ? Vous avez cliqué sur la petite flèche ? Vu les "citation", "encart", "important", "perso1" et "perso2" ? Ben c'est des styles qui, grâce à une toute pitite ligne de css, vont vous permettre de personnaliser l'apparence de tout un bloc de texte. Si c'est pas beau, franchement.

   Les cinq lignes correspondantes, elles sont ensemble, bien rangées à la fin des lignes qui permettent de personnaliser les articles. Chez moi, elles sont comme ça :

.hitcitation {font-style:italic;text-align:justify;padding:5px 20px;background-color:#eee;}
.hitencart {border:1px solid black;text-align:justify;font-weight:bold;margin:5px 0px;padding:5px 5px;}
.hitimportant {font-weight:bold;color:red;font-weight:bold;font-size:120%;}
.hitperso1 {font-style:italic;}
.hitperso2 {font-weight:bold;}

   Et si ça ne vous suffit pas, cinq styles prédéfinis différents tout prêts à l'emploi, rien ne vous empêche d'en créer d'autres Il vous faudra juste appeler le css défini dans la ligne .monstyle par la balise suivante : <div class="monstyle">, à refermer par un </div>, mais ça vous devez le savoir depuis le temps que je vous le répète. Ça marche aussi avec <span class="monstyle"> </span> au fait, y'a peut-être une différence, mais si y'en a une, ben elle est trop subtile pour moi.

   Ha, rappelez-moi de vous parler des nouvelles classes associées à la date, un de ces jours.

Par Le Gros CSS
Ecrire un commentaire - Voir les 2 commentaires
   Nous avons vu le menu tout simple à un niveau et le menu à deux niveaux qui se déplie vers le bas, nous allons étudier aujourd'hui le menu à trois niveaux (et plus si affinités ) qui se déplie vers la droite.

   Côté html, rien de changé. Notre menu est toujours une liste. Avec des sous-niveaux et des sous-sous-niveaux. Des <ul> qui sont dans les <li> qui sont dans les <ul> qui sont dans les <li> qui...
   Je reprends mon menu à sous-niveaux, et j'ajoute en html quelques choix de viandes, de poissons et de pâtisseries... tant que j'y suis, je range le tout dans une balise <div>, dans laquelle je note le petit nom choisi pour mon menu...

<div class="menu3">
<ul>
 <li>Entr&eacute;e
  <ul>
   <li>Crudit&eacute;s</li>
   <li>Crustac&eacute;s</li>
  </ul>
 </li>
 <li>Plat
  <ul>
   <li>Viande
    <ul>
    <li>Poulet</li>
    <li>Mouton</li>
   </ul>
   </li>
   <li>Poisson
     <ul>
      <li>Avec ar&ecirc;tes</li>
      <li>Sans ar&ecirc;tes</li>
    </ul>
   </li>
  </ul>
 </li>
 <li>Fromage</li>
 <li>Dessert
  <ul>
   <li>Fruit</li>
   <li>P&acirc;tisserie
    <ul>
     <li>For&ecirc;t noire</li>
     <li>Tarte Tatin</li>
    </ul>
   </li>
  </ul>
 </li>
</ul>
</div>

   Je valide, et voilà ce que je dois avoir. Si j'ai autre chose, c'est que je me suis planté quelque part.



   La suite de la recette, vous la connaissez : clic sur chaque élément présent au dernier niveau de son <ul> et ajout du lien... (rien ne m'empêche d'associer un lien à d'autres niveaux, par exemple « Viande » ou même « Dessert », si j'en ai l'usage)

   Oh que c'est joli toutes ces couleurs et ces petites nétoiles qui défilent  
   Euh non en vrai c'est très laid, mais ça a au moins le mérite de nous aider à repérer quelle ligne fait quoi dans le gros bout de css que voici que voilà :

/* common styling */
.menu3 {font-family: "Courier New", sans-serif; width:106px; height:84px; position:relative; font-size:14px; margin:10px 0; border: 1px solid #FF0000; border-width: 1px 1px 0px 1px;}
.menu3 ul {padding:0; margin:0;list-style-type: none; }
.menu3 ul li {float:left; margin-right:0px; position:relative;display:block; width:106px; text-decoration:none; color:#fff;height:20px; text-align:center; background:#000; line-height:20px; cursor: url(http://img525.imageshack.us/img525/2606/pencilpc5.gif), auto; border: 1px solid #FF0000; border-width: 0 0 1px 0;}
.menu3 ul li a, .menu3 ul li a:visited  {display:block; text-decoration:none; width:106px; font-style: normal; color:#ffff00; height:20px; text-align:center; background:#0000FF; line-height:20px;}
.menu3 ul li ul {display: none;}
.menu3 ul li:hover { background-color: #fff; color: #000; }
.menu3 ul li:hover a {color:#fff; background:#ff00ff;}
.menu3 ul li:hover ul {display:block; position:absolute; top:-1px; left:106px; width:106px; border: 1px solid #000; border-width: 1px 1px 0 1px;}
.menu3 ul li:hover ul li { background-color: #00FF00; border: 1px solid #000; border-width: 0 0 1px 0; }
.menu3 ul li:hover ul li:hover { background-color: #fff; background-image: url(http://idata.over-blog.com/1/99/25/61/stars2.gif); color: #FF0000; font-weight: bold; }
.menu3 ul li:hover ul li ul {display: none;}
.menu3 ul li:hover ul li a {display:block; background:#FF0000; color:#00FF00; width:106px;}
.menu3 ul li:hover ul li a:hover {background:#00FF00; color:#FF0000;}
.menu3 ul li:hover ul li:hover ul {display:block; position:absolute; left:106px; top:-1px; }
.menu3 ul li:hover ul li:hover ul li a {display:block; width:106px; background:#00FFFF; color:#DDA0DD;}
.menu3 ul li:hover ul li:hover ul li a:hover {background:#ffff00; color:#000;}

    Dépiautage de la bête :
  • ligne .menu3 : l'ensemble de notre menu. Des marges pour le positionner, police et taille d'icelle fixées une bonne fois pour toutes, une largeur, une hauteur (égale au nombre de cellules x leur hauteur, spécifiée dans la ligne .menu3 ul li, + la somme des épaisseurs des bordures mentionnées dans la même ligne et ici), bordures rouges (#FF0000) en haut, à droite et à gauche et une position: relative qui doit bien servir à quelque chose.
  • ligne .menu3 ul : à laisser en l'état, elle assure le bon positionnement de l'ensemble (et l'éradication des puces).
  • ligne .menu3 ul li : ligne qui définit l'apparence des li du ul, des éléments du premier niveau, quoi. A mon avis, mieux vaut ne pas toucher au début (jusqu'à la width, assez logiquement égale à celle de la ligne .menu3), mais on peut s'amuser avec le reste. J'ai fait sobre Cellules de 20 px de haut, bordées de rouge (#FF0000) en bas, texte blanc (#FFF) centré sur fond noir (#000), à peine me suis-je autorisé à forcer mon curseur personnalisé à s'afficher.
  • ligne .menu3 ul li a, .menu3 ul li a:visited : et si l'un des éléments du premier niveau est un lien (comme ici « Fromages ») ? Une fois assuré que la width est toujours égale à celle spécifiée dans la ligne .menu3 (et la height égale à celle des autres cellules du niveau, soit 20 px), et après avoir demandé que les liens, qui sont en italiques dans mon css, s'affichent normalement (font-style: normal;), je peux m'amuser. En mettant par exemple mon texte en jaune (#FFFF00) sur fond bleu (#0000FF).
  • ligne .menu3 ul li ul : un display: none; afin que les niveaux inférieurs restent sagement cachés jusqu'à ce qu'on leur demande d'apparaître.
  • ligne menu3 ul li:hover : comportement des cellules qui ne sont pas des liens (« Entrée », « Plat » et « Dessert ») au survol. Sobre encore : texte noir (#000) sur fond blanc (#FFF). A noter qu'IE6 ne comprend pas la commande li:hover, pour lui, on ne peut hoverer que sur un lien, un a. Pas sur un élément de liste, un li. Donc avec IE6, ben ça marche pas. En même temps, sur IE6, y'a pas grand-chose qui marche. Que personne ne me parle d'IE6 .
  • ligne .menu3 ul li:hover a : je survole ma cellule « Fromage », qui se trouve également être un lien. Et, ô miracle, apparaît une espèce d'horreur, texte blanc (#FFF) sur fond magenta (#FF00FF).
  • ligne .menu3 ul li:hover ul et .menu3 ul li:hover ul li : remontez de quelques lignes... ces deux lignes-ci servent à définir le placement et l'apparence de chaque sous-menu et des éléments qui le composent, si ceux-ci ne sont pas des liens (mes « Viandes », « Poissons » et « Pâtisseries », donc). J'ai choisi une largeur égale à celle de mon menu principal (106px), une bordure noire (#000) et un délicieux fond d'un vert très printanier (#00FF00). Comme je n'ai pas spécifié de couleur, elle est par défaut la même que celle du niveau précédent, blanc (#FFF). Les commandes "top" et "left" déterminent le positionnement de ce sous-menu par rapport à celui du niveau supérieur : top: -1px; pour rattraper le décalage provoqué par la bordure, left: 106px; parce que telle est la largeur des cellules du niveau supérieur
  • ligne .menu3 ul li:hover ul li:hover : devinez quoi ? Ben c'est ce qu'il se passe quand je survole un élément (non-lien) du deuxième niveau. Fond blanc (#FFF), jolies nétoiles qui défilent parce que pourquoi se priver de coller une background-image si on peut, texte rouge (#FF0000) en gras.
  • ligne .menu3 ul li:hover ul li ul : vous ne trouvez pas qu'elle ressemble furieusement à la ligne .menu3 ul li ul ? Hmmm ?
  • ligne .menu3 ul li:hover ul li a et .menu3 ul li:hover ul li a:hover : mais, et mes « Crudités », « Crustacés » et « Fruits » ? Ce sont des liens ! Qu'à cela ne tienne, faisons-les jolis aussi. Texte vert (#00FF00) sur fond rouge (#FF0000)... ça tue bien les yeux, hein ? Si j'inverse les couleurs au survol, c'est mieux ?
  • lignes .menu3 ul li:hover ul li:hover ul et .menu3 ul li:hover ul li:hover ul li a et .menu3 ul li:hover ul li:hover ul li a:hover : et hop, on passe au niveau inférieur... left, top, width, texte mauve (#DDA0DD) sur fond bleu tellement piscine que ça sent le chlore (#00FFFF), qui deviennent au survol noirs (#000) sur fond jaune (#FFFF00). A noter que les bordures reprennent automatiquement les valeurs spécifiées au niveau supérieur.
   Et on peut continuer longtemps comme ça ! Jusqu'à avoir des lignes .menu3 ul li:hover ul li:hover ul li:hover ul li:hover ul li:hover ul li:hover ul li:hover ul li:hover ul li a:hover... C'est marrant, mais ça me fait penser à du tricot, la construction de ce menu. Peut-être parce que je n'en ai jamais fait. Mais quand-même.

   Bon, suffit pour les menus... quoique les menus accordéons sont rigolos aussi, possible donc que je me laisse aller à en décortiquer un quand vous aurez digéré celui-ci
Par Le Gros CSS
Ecrire un commentaire - Voir les 0 commentaires
   Bon. Mon :
  • Entrée
  • Plat
  • Fromage
  • Dessert
   il est bien joli, mais j'aimerais bien avoir le choix, moi. L'entrée, crudités ou crustacés ? Le plat, viande ou poisson ? Le dessert, fruit ou pâtisserie ? Faudrait pouvoir faire des sous-listes. Des listes dans la liste, quoi. Traduit en html, faudrait pouvoir mettre des <ul> dans l'<ul>, ou plus précisément, dans chaque élément de la liste, des <ul> dans chaque <li>. Des Zul dans chaque lit ? Euh, non. C'est pas le moment de dormir, mais alors là, vraiment pas.
   Tiens, je vais reprendre le html de mon menu basique et regarder si c'est pas faisable. Avec un peu de chance...

<ul>
<li>Entr&eacute;e</li>
<li>Plat</li>
<li>Fromage</li>
<li>Dessert</li>
</ul>

   Des <ul> dans les <li>...

<ul>
 <li>Entr&eacute;e
  <ul>
   <li>Crudit&eacute;s</li>
   <li>Crustac&eacute;s</li>
  </ul>
 </li>
 <li>Plat
  <ul>
   <li>Viande</li>
   <li>Poisson</li>
  </ul>
 </li>
 <li>Fromage</li>
 <li>Dessert
  <ul>
   <li>Fruit</li>
   <li>P&acirc;tisserie</li>
  </ul>
 </li>
</ul>

   Je mets mon code en html...



   Oh Que c'est beau !!! Pour ceux que ça intéresse, j'ai préparé un petit décorticage ICI.

   Suite des opérations, insérer les liens que je souhaite associer à chaque élément de mes sous-listes... ou plus exactement, à chaque élément présent au dernier niveau de chaque <li> de mon menu (point de sous-liste dans l'élément « Fromage », mais il n'en est pas moins au dernier niveau, et doit par là-même comporter un lien :




** INTERLUDE **



    Voilà. Maintenant, à moi, Gros CSS, de rentrer en action Ma mission : obtenir ce qui suit :






    (j'aurais pas dû cliquer sur mes liens pour voir si tout marchait, maintenant j'ai faim, c'est malin)

   Trève de bavardages.
   Vous vous souvenez du menu précédent ? Le tout simple à un niveau ? Nous lui avions attribué deux petits noms, l'un dans la balise <ul> déjà existante, l'autre dans une balise <div> dont nous l'avions encadré. Cette fois, nous allons nous passer du <div>. Mais nous allons compléter la balise <ul> présente au tout début de notre menu en y insérant le petit nom de notre menu, afin que le css s'y retrouve et sache où agir. La syntaxe est la même, et voilà notre menu précédé de <ul id="monmenu"> (pas d'espaces, pas de caractères bizarres, mais ça, vous le savez déjà).
   L'id va fort logiquement se retrouver dans le bout de css que nous allons rajouter et que voili, et que voilou :

ul#monmenu {list-style: none;
    padding: 0px;
    margin: 0px;}
ul#monmenu li { float: left;
    position: relative;
    width: 120px;
    text-align: center;
    list-style: none;
    border: 1px solid #CD3333;
    color: #6959CD;
    font-weight: bold;
    margin-right:5px; }
ul#monmenu li:hover { background-color: #FFFF00; }
ul#monmenu li a { display: block;
    font-weight: bold;
    color: #FF0000;
    padding: 10px ;
    text-decoration: none;}
ul#monmenu li a:hover {background-color: #FFFFFF;
    color: #CC00FF; }
li ul { display: none;
    list-style: none;
    position:absolute;
    width:160px;
    top: 18px;
    left: 0;
    font-weight: normal;
    padding: 1px 0 10px 0;
    margin-left:-1px;}
ul#monmenu li ul { top: 17px; left: 0; }
ul#monmenu li:hover ul li a { font-weight: normal; background: #FFFFFF; color: #000000;}
ul#monmenu li:hover ul li a:hover { background:#F7F7F7; color: #2F8C74;}
li>ul {top: auto;
    left: auto;}
li:hover ul, li.over ul {display: block;}

    Décortiquons la bête, ligne par ligne.

  • ligne ul#monmenu : padding et margin pour le placement de mon menu.
  • ligne ul#monmenu li : ici, je détermine l'aspect des cellules. Largeur (width), position, couleur et aspect du texte (text-align, color et font-weight), espacement entre les cellules (margin-right), disparition des puces de listes (list-style: none;). Je laisse les attributs float et position en l'état.
  • ligne ul#monmenu li:hover : une petite fantaisie que j'ai rajoutée, qui entraîne le changement de couleur du fond de mes cellules au survol (background-color).
  • ligne ul#monmenu li a : eh eh... le a signale que nous nous occupons ici de l'aspect d'un lien. Et voilà pourquoi le « Fromage » de mon menu n'a pas la même tête que ses petits copains « Entrée », « Plat » et « Dessert » ! Parce qu'il n'y a pas de choix dans les fromages, et donc que mon « Fromage » est un lien, lui ! Avec sa couleur à lui, son aspect à lui (quant au padding présent dans cette ligne, il sert à régler la hauteur de la cellule, pour qu'elle ait le même aspect que les autres, suffit d'attribuer au padding la même valeur que dans la ligne ul#monmenu li)... et son comportement à lui au survol, comme spécifié dans la...
  • ligne ul#monmenu li a:hover.
  • ligne li ul : le display:none; est là pour nous assurer que nos sous-menus (les « Crudités », «Crustacés » et autres gourmandises) ne sont pas visibles quand le menu est au repos. On ne touche pas au reste ! Pas pour le moment du moins, parce qu'on va s'amuser avec cette ligne, en guise de pousse-café
  • ligne ul#monmenu li ul : le positionnement des sous-menus, de ce qui apparaît quand on passe la souris sur l'une des cellules « Entrée », « Plat » ou « Dessert ». Pour comprendre le pourquoi du comment de ce top: 17px;, amusons-nous à le passer à... 30px, par exemple.



   Bravo, vous avez inventé le menu incliquable Donc, mieux vaut ne toucher à rien et laisser cette valeur dans l'état où vous l'avez trouvée
  • ligne ul#monmenu li:hover ul li a : regardez un peu ça... ul#monmenu (li:hover ul) li a... y'a comme un air de famille, non ? Normal, cette ligne-ci définit l'aspect des liens présents au second niveau de mon menu : texte noir sur fond blanc. Mes « Crudités », «Poisson » et « Pâtisseries ». Quant à la
  • ligne ul#monmenu li:hover ul li a:hover : les mêmes, au survol : texte vert, fond gris pâle.
  • lignes li>ul, li:hover ul, li.over ul : on ne touche à rien ça pourrait exploser
**DIGESTIF**

   En m'amusant à tout changer dans toutes les lignes pour voir à quoi elles servaient (c'est encore le meilleur moyen de comprendre et d'apprendre, hein ), ben j'ai trouvé un truc rigolo :



   En fait, j'avais tout enlevé la ligne ul li. Après je l'ai remise, et je me suis amusé à tout changer dedans. Pour obtenir ce zoli décalage, voilà à quoi ressemblait ma ligne li ul :

li ul { display: none;
    list-style: none;
    position: absolute;
    width:160px;
    top: 18px;
    left: 0;
    font-weight: normal;
    margin-left: 0px;}

   Il a aussi fallu que j'adapte 1) la largeur des cellules parce que sinon le menu rentrait plus dans la ligne et 2) la marge entre les cellules parce que sinon la « Viande » venait se plaquer sur le « Fromage », façon cheeseburger. Beurk. Et tout ça en tâtonnant, dans la ligne ul#monmenu li.
   A vous de poursuivre les expériences, de jouer avec les marges et les paddings, les couleurs, les fonds, les gifs à paillettes...

   Ce menu (dans uns forme css-iquement très simplifiée) est visible ICI.

   Le temps de digérer, et je vous présente LE menu qui tue
Par Le Gros CSS
Ecrire un commentaire - Voir les 0 commentaires
 
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Signaler un abus