• The Labyrinth of Magic

    #email-verification-warning {height: 0px;

        padding: 0px;

        margin: 0px;

        font-size: 0px;

        opacity: 0;

    }

    #help_bubble{ background: rgb(240,240,240);

        border: none;

        border-radius: 2px;

        border-top: rgb(250,250,250);

        box-shadow: 0 0 1px rgba(0,0,0,0.4);

        

    }

    #help_bubble img{ max-width: 300px;

        max-height: 150px;

    }

    * {line-height: 20px;

        font-family: helvetica;

        font-size:12.5px;

    }

    * a { color: rgb(100,46,56);     

        text-decoration: none;

        border-bottom: 1px solid rgba(100,46,56,0);

        opacity: 1;   

        -webkit-transition: 500ms;  

        -moz-transition: 500ms;  

        -o-transition: 500ms;   

        transition: 500ms; }  

    * a:hover { opacity: 0.9; 

        border-bottom: 1px solid rgba(100,46,56,0.7);

    }  

    * img {max-width: 98%;

        margin: 5;

    }

     

    input[type=text]{ border: none;

        background: rgba(255,255,255,0.7);

        border-radius: 3px;

        height: 23px;

        margin: 5px;

    }

    input[type=submit]{ 

        border: none;

        border-radius: 3px;

        height: 25px;

        background: rgba(226,193,126,0.6);

        margin: 5px;

    }

     

    html,

    body {height: 100%;

        min-height:100%;

    }

     

    #body { min-height:100%;

        top: 0px;

       border-top: none;

        background: url(http://img15.hostingpics.net/pics/384797back2.png) repeat-x 0px 350px,

    url(http://img15.hostingpics.net/pics/441303head.png) no-repeat 90% 0px,

     url(http://img15.hostingpics.net/pics/694357back.png) no-repeat fixed 0px 0px / cover;

    }

     

    #background {min-height:100%;

        margin-top: -25px;

        width: 100%;

        

    }

    #header{ 

        height: 0px;

        width: 100%;

    }

    #titre_header a { display: block;

        position: absolute;

    top: 367px;

    left: 650px;

        height: 50px;

        width: 500px;

        font-variant: small-caps;

        font-size: 42px;

        color: rgba(255,255,255,0.6);

        text-shadow: 1px 1px 1px rgba(0,0,0,0.7);

        border:none;

    }

     

    #footer,

    #footer a{ height:20px;

        position: absolute;

        right: 10%;

        padding:none;

        top:3px;

        right: 5px;

        color:rgba(100,46,56,0);

        opacity:0.7;

        

    }

    #footer::after{ content: "Design by Nagalia";

            color:rgba(100,46,56,0.5);

    }

     

    #menu { background: rgb(59,57,55); 

        height:321px;

        position: absolute;

        top: 0px;

        right:0px;

        padding-top:30px;

        border-left: 1px solid rgba(0,0,0,0.3);

    }

    #menu a{

        float: left;    

        height: 20px;

        padding: 5px;

        font-variant: small-caps;

        font-size: 15px;

        font-weight:bold;

        color: rgba(255,255,255,0.6);

        text-shadow: 1px 1px 1px rgba(0,0,0,0.7);

        margin:7px;

        margin-right:0px;

        margin-left:0px;

        padding-left:7px;

        padding-right:7px;

        border:none

    }

    #menu a:hover{ background: rgba(255,255,255,0.1);

    }

     

     /********MENU*******/

     

    #menu1_float { 

        top: 0px;

        min-height:100%;

     

    }

    #menu1 { background: rgb(59,57,55);    

        padding-left: 15px;

        width:220px;

        padding-right: 20px;

        border-right : 1px solid rgba(0,0,0,0.25);

        box-shadow: 5px 0px 10px rgba(0,0,0,0.5);

        position: fixed;

        top: -20px;

        overflow:auto;

        height:100%;

        padding-bottom: 30px;

        z-index:1;

        color: grey;

        text-shadow: -1px 1px 0px rgba(0,0,0,0.5);

    }

    .module_menu_contenu_block{padding-bottom:5px;

    }

    .module_menu_titre { display: inline-block;

        background : rgb(224,168,62);

        float: left;    

        height: 20px !important;

        padding: 5px;

        font-variant: small-caps;

        font-size: 15px;

        font-weight:bold;

        color: rgba(0,0,0,0.7);

        text-shadow: 1px 1px 1px rgba(255,255,255,0.6);

        border-radius: 0 4px 4px 0;

        margin:7px;

        margin-left:-15px;

    }

     

    .module_menu_titre::after{ content:"";

        display: block;

        float: right;

        margin-top:-5px;

        margin-left:8px;

        margin-right: -5px;

        /* taille */    

        height:0;width:0;   

        /* les bordures */   

        border-left:16px solid rgb(224,168,62);

        border-bottom:15px solid rgb(59,57,55);

        border-top:15px solid rgb(59,57,55)

    }

     

    #menu1 a{ color: rgba(224,168,62,0.5);

        border-bottom: 1px solid rgba(224,168,62,0);

        margin-bottom:3px;

        display: inline-block;

    }

    #menu1 a:hover{ 

        border-bottom: 1px solid rgba(224,168,62,0.4);

    }

     

    #menu1 .module_menu_type_lastvisitors { text-align:center;

        margin-left: -30px;

        margin-right: -20px;

        margin-bottom: 10px;

        border: none;

    }

    #menu1 .module_menu_type_lastvisitors .module_menu_titre{ visibility:hidden;

    }

    #menu1 .module_menu_type_lastvisitors img {margin: 0px;

        width: 50px;

        border: none;

        filter: sepia(1); 

        -webkit-filter: sepia(1);   

        -moz-filter: sepia(1);     

        -o-filter: sepia(1);     

        -ms-filter: sepia(1);

        border-radius:50%;

        box-shadow: 1px 1px 1px black, inset 0 0 6px rgba(0,0,0,1);

    }

    #menu1 .module_menu_type_lastvisitors a{ border: none;}

     

    #menu2{ width: 0px;

        background: none;

        border: none;

        top: 0px;

        right:0px;

    }

     

    #menu2 .module_menu_type_lastvisitors{ position: absolute;

        width: 90px;

        right: -25px;

        top: 0px;

    }

    #menu2 .module_menu_type_lastvisitors img{ margin: 7px;

        filter: sepia(1); 

        -webkit-filter: sepia(1);   

        -moz-filter: sepia(1);     

        -o-filter: sepia(1);     

        -ms-filter: sepia(1);

        border-radius:50%;

        box-shadow: 1px 1px 1px black, inset 0 0 6px rgba(0,0,0,1);

        transition: 300ms;

    }

    #menu2 .module_menu_type_lastvisitors img:hover{ box-shadow: 0 0 2px black;

    }

    #menu2 .module_menu_type_search { position: absolute;

        width: 350px;

        left: 300px;

        top: 353px;

    }

    #menu2 .module_menu_type_search .module_menu_titre {height: 0px;

        padding: none;

        margin: none;

        display: none;

    }

    #menu2 .module_menu_type_search input[type=text]{ border: none;

        background: rgba(255,255,255,0.7);

        border-radius: 3px;

        float: left;

        height: 23px;

        margin-top:0px;

    }

    #menu2 .module_menu_type_search input[type=submit]{ 

     

        margin-top: -20px;

        border: none;

        border-radius: 3px;

        height: 25px;

        background: rgba(226,193,126,0.6);

    }

     

     

    #content {min-height: 60%;

        position: absolute;

        color: rgba(0,0,0,0.7);

        width: 100%;

        text-align: justify; 

        margin: 0;

        margin-top: 420px;

        background: rgb(124,108,88) url(http://img15.hostingpics.net/pics/538911judaldroit.png) no-repeat 101.5% 100%;

    }

    .ulmodules { width: 68%;

        margin-left:26%;

    }

     

     

    .module_titre {height:50px}

    .module_titre_contenu

    { display: block;

        background : rgb(59,57,55);

        float: right;    

        height: 20px;

        padding: 15px;

        font-variant: small-caps;

        font-size: 32px;

        color: rgba(255,255,255,0.6);

        text-shadow: 1px 1px 1px rgba(0,0,0,0.7);

        border-radius: 4px 0px 0px 4px;

        margin-right:-9%;}

    .module_titre_contenu a{font-variant: small-caps;

        font-size: 32px;

        color: rgba(255,255,255,0.6);

        text-shadow: 1px 1px 1px rgba(0,0,0,0.7);

    }

    .module_titre_contenu::before{ content:"";

        position:absolute;

        margin-left:-50px;

        top:1px;            

        /* taille */    

        height:0;width:0;   

        /* les bordures */   

        border-right:36px solid rgb(59,57,55);   

        border-bottom:24px solid transparent; 

        border-top:24px solid transparent;

    }

    .article_info{position:absolute;

        right:30px;

        font-size:10px;

        opacity: 0.7;

    }

    .article_info a{ font-size:10px;

    }

     

    /*MENUBAR*/

     

    .menubar_button

    .menubar_section:hover,

    .menubar_section,

    .menubar_separation,

    .menubar_button,

    #menubar_logo,

    #menubar_favorites { background: none;}

     

    #menubar_section_content,

    #menubar_section_appearance,

    #menubar_section_interactions,

    #menubar_section_manage,

    #menubar_section_account,

    #menubar_section_help,

    #menubar_notifications,

    #menubar_signin { background: none;

        transition: 400ms;

       -webkit-transition: 400ms;

       -moz-transition: 400ms;

       -o-transition: 400ms;

    }

     

    #menubar_section_content:hover,

    #menubar_section_appearance:hover,

    #menubar_section_interactions:hover,

    #menubar_section_manage:hover,

    #menubar_section_account:hover,

    #menubar_section_help:hover,

    #menubar_notifications:hover{

        background : rgb(224,168,62);

    }

     

    #menubar_favorites_btn, 

    #menubar_nofavorites_btn:hover { 

          background: url("/images/menubar/icon_nofavorite.png")no-repeat 50% 50%; 

    }

    #menubar_favorites_btn:hover,

    #menubar_nofavorites_btn { 

          background: url("/images/menubar/icon_favorite.png")no-repeat 50% 50%; 

    }

    #menubar_hide,

    #menubar_show{display:none;

    }

     

    #menubar{ background: rgb(85,82,79); 

        border-bottom: 1px solid rgba(0,0,0,0.3);

        box-shadow: 0 0 3px rgba(0,0,0,0.8);

        font-variant: small-caps;

        font-size: 15px;

        font-weight:bold;

        color: rgba(255,255,255,0.6);

        text-shadow: 1px 1px 1px rgba(0,0,0,0.4);

        opacity:0;

    transition: 800ms;

       -webkit-transition: 800ms;

       -moz-transition: 800ms;

       -o-transition: 800ms;

    }

    #menubar a,

    #menubar a:hover{  font-variant: small-caps;

        font-size: 15px;

        color: rgba(255,255,255,0.6);

        text-shadow: 1px 1px 1px rgba(0,0,0,0.4);

        text-decoration: none;

    }

    #menubar:hover{ opacity: 1; }

     

    .menubar_section ul { background-color: rgb(85,82,79);

       border-radius: 0 0 5px 5px;

    }

    .menubar_section li { background-image:none;

        color: silver;

        font-variant: normal;

    }

    .menubar_section li:hover { background: rgba(255,255,255,0.5); }

    .menubar_section li:last-child {background-image:none;}

    .menubar_section li:last-child:hover {border-radius: 0 0 5px 5px; }

    #notifications_panel { background-color: rgb(85,82,79);

       border-radius: 0 0 20px 20px;

        

       }

    #notifications_panel  .notif_msg {line-height: 5px;

        height: 39px;

        display: block;

    }

    #notifications_panel a{ 

        font-variant: normal;

    }

    #notifications_panel li {

        background: none;

    }

    #notifications_panel li a:hover {

        background: rgba(255,255,255,0.5);

        color: rgba(0,0,0,0.7);

        text-shadow: 1px 1px 1px rgba(255,255,255,0.6);

        font-variant: normal;

    }

    #notifications_panel li:last-child a:hover{  

        border-radius: 0 0 20px 20px;

       background: rgba(255,255,255,0.5);

        font-variant: normal;

    }

    #notifications_panel .new_notification {

        background : rgb(224,168,62);

        color: rgba(0,0,0,0.7);

        text-shadow: 1px 1px 1px rgba(255,255,255,0.6);

    }


    83 commentaires
  • Vous savez probablement déjà que l'on peu afficher des infobulles sur son blog en réutilisant un script de la plateforme. Si vous ne le saviez pas, je vous conseil de regarder l'article suivant, cela pourra toujours vous être utile.

    => http://fanstasy-graph.eklablog.net/infobulle-a27953875

    Cependant, bien que l'on puisse les personnaliser un peu grace au CSS, elles requiert que le JS soit activé sur le blog, et le contenu est inaccessible. Impossible de faire de copié collé, ou d'y insérer des liens.

    Je vous propose de résoudre ce problème en créant vos propres infobulles en full CSS, auxquelles vous pourrez également ajouter des transition pour avoir un affichage un peu plus sympa.

    Survolez moi......je fais apparaitre une infobulle !
    HTML

    Sans plus attendre, voici la structure HTML

    <div class="infoBulle">ELEMENT VISIBLE<span class="infoBulle">CONTENU INVISIBLE</span></div>

    Votre élément visible peut aussi bien être du texte, un lien ou une image. Vous pouvez également mettre ce que vous voulez dans le contenu invisible, texte image ou lien ;) Ce code vous permet donc de traiter tous les cas... sauf si vous voulez placer votre infobulle dans un texte comme ci-dessous:

    Voici un texte contenant une infobulleAfficher une définition.

    Même en spécifiant que div.infoBulle est un élément inline, je n'arriverais pas à ce résultat sur EklaBlog. En effet, l'éditeur HTML place automatiquement les balises <p> autour du texte, et n'autorise pas la présence d'un autre élément de type block (même s'il change de type) dans un paragraphe.
    Ainsi, si j'écris :

    <p> Du texte <div style="display:inline;"> Une boite </div> et du texte </p>

    Cela sera corrigé à l'édition en :

    <p> Du texte </p> <div style="display:inline;" > Une boite </div> <p> et du texte </p>

    J'aurais donc deux paragraphes et ma boite entre les deux.

    Pour régler ce problème, il faut utiliser une balise qui est par défaut de type inline. Par exemple <em> (italique) <strong> (gras) ou <a> (lien)

    Si vous utiliser l'une de ces balises à la place de <div>, vous ne pourrez pas l'utiliser à nouveau à l'intérieur du <span>. Privilégiez donc le premier code (avec <div> et <span>) tant que vous pouvez.

    Dans mon exemple, j'ai choisi la balise <strong> Ce qui me donne le code suivant :

    <strong class="infoBulle">Mon texte visible<span class="infoBulle">Je ne <em>peux pas<em> réutiliser la balise <a href="#">strong</a></span></strong>

    CSS

    Passons au CSS. Je vais travailler sur mon premier code avec div (vous n'aurez qu'à arranger un peu si vous devez changer de balise). La première chose à faire est de définir les deux états de la balise span (et donc de l'infobulle), c'est à dire visible et invisible.

    div span.infoBulle{
       visibility:hidden; /*masque l'infobulle*/
       position: absolute; /*permet de la faire sortir de div */
       margin-top: -Xpx; /*déplace vers le haut*/
       margin-left: -Xpx; /*déplace vers la gauche*/
       propriété : valeur; /*personnalisez*/
    }

    Voici l'état invisible.
    Modifier le X de margin-top et margin-left pour placer votre infobulle à côté, au dessus ou en dessous du texte visible.

    div.infoBulle:hover span.infoBulle {
       visibility: visible;
    }

    Et voici l'état visible. Il suffit de mettre visibility :visible;

    Avec ces deux codes vous devriez avoir votre texte invisible qui apparait et disparait. Passons donc à la partie un peu plus fun : la personnalisation. Nous allons placer tout nos styles dans div span.infoBulle. Ça peut sembler un peu étrange étant donné que c'est l'état invisible, mais cela nous garantie que nous aurons tout au moment d'afficher l'infobulle. 
    Je vous laisse personnaliser ça comme vous voulez, et je passe directement aux transitions. Si vous voulez des effets différents, je vous invite à lire les deux articles suivants :

    => Transition
    => Transform

    Dans mes exemples, j'ai utiliser rotate, scale ainsi que la propriété opacité que vous devriez connaitre (sinon, allez jeter un oeil à cet article)

    div span.infoBulle{
       visibility:hidden;
       position: absolute;
       margin-top: -30px;
       margin-left: -30px;
       background:  black;
       color: silver;
       transform:  scale(0) rotate(20deg);
       opacity: 0;
       transition: 300ms;
    }

    La partie grisée est normalement déjà présente dans votre CSS. Il s'agit du code donné plus haut pour le fonctionnement de l'infobulle.

    scale(0) me permet de réduire la taille de l'infobulle jusqu'à la rendre invisible
    rotate(20deg) tourne l'infobulle de 20°
    opacity: 0 baisse l'alpha de l'infobulle jusqu'à la rendre invisble

    Soyons bien d'accord, ce que je viens de rajouter n'a pas pour but de cacher l'infobulle, car elle l'est déjà grâce à visibility : hidden. En revanche, cela me permet, avec transition, de l'afficher et de la masquer d'une façon un peu plus classe ;) C'est ce que je vais définir dans le deuxième code, celui qui rend l'infobulle visible :

    div.infoBulle:hover span.infoBulle {
       visibility: visible;
       transform:  scale(1) rotate(0deg);
       opacity: 1;
    }

    scale(1) redonne à mon infobulle sa taille normale
    rotate(0) lui redonne la replace à l'horizontale
    opacity:1 la rend visible

    Toutes ces modification sont effectuées en 300ms, ce qui permet de faire une transition entre les deux états.

    Pourquoi visible: hidden ?

    Il est vrai que dans cet exemple j'aurais pu m'en passer, puisque je réduit sa taille à 0*0px. Mais dans tous les autres cas, même si vous mettez opacity: 0, l'élément est toujours accessible sur la page. Je vous conseil donc de le laisser, ça vous évitera d'avoir des problèmes d'affichages si vous vous trompez dans vos propriétés.


    24 commentaires
  • Ce tutoriel passe en revu les différents éléments de la barre d'outil EklaBlog (la petite barre blanche au dessus du blog). Comme le sujet un petit peu "touffu", des codes tout prêts sont disponible à la fin de l'article.

    Accéder aux codes

     

    Structure de la menubar

    Si vous avez déjà été fouiller dans le code source du blog, vous avez pu remarquer que la menubar est constituée de nombreux éléments distincts. Je vous propose donc de décortiquer tout ça pour commencer. (seuls la structure et les identifiants sont notés)

    <div id="menubarabsolute">
       <div id="menubar_show">
       </div>
       <div id="menubar">
          <table>
             <tr>
                <td id="menubar_hide">
                </td>
                <td id="menubar_logo">
                </td>
                <td class="menubar_section" id="menubar_section_account">
                </td>
                <td class="menubar_section" id="menubar_notifications">
                </td>
                <td class="menubar_separation">
                </td>
                <td class="menubar_section" id="menubar_section_content">
                </td>
                <td class="menubar_section" id="menubar_section_appearance">
                </td>
                <td class="menubar_section" id="menubar_section_interactions">
                </td>
                <td class="menubar_section" id="menubar_section_manage">
                </td>
                <td class="menubar_section" id="menubar_section_help">
                </td>
                <td id="menubar_favorites">
                </td>
             </tr>
          </table>
          <div id="menubar_info">
          </div>
       </div>
    </div>

    Si vous connaissez les balises HTML, vous remarquez que la menubar est en grande partie un tableau.

    Un tableau se trouve entre les balises <table>. On définit d'abbord la ligne avec <tr> puis les différentes cellules se trouvent entre les <td>
    En plus du tableau qui contient presque toutes les informations, nous avons une <div> avant, et une div après le tableau.

    La <div> #menubarabsolute contient toute cette structure. Mais elle est masquée par #menubar, c'est pourquoi je vous conseil de travailler en priorité sur ce sélecteur si vous voulez changer le fond ou la couleur de texte par exemple.

    #menubar{background: red;}

    En ce qui concerne le tableau, chaque ligne appartient à un élément spécifique. Les ID me semblent assez explicites, mais je vais quand même revenir dessus :

    #menubar_hide
    -> Il s'agit de la petite flèche à droite de la menubar qui permet de la masquer (d'où le "hide" voulant dire "caché")

    #menubar_logo
    -> La zone contenant le logo d'EklaBlog. Je vous rappelle que même s'il est très facile de le supprimer ou le modifier, ce serait totalement irrespectueux vis à vis de la plateforme

    #menubar_section_account
    -> La zone contenant votre pseudo et votre avatar réduit

    #menubar_notifications
    -> Cellule contenant l'icône et le nombre de notification

    #menubar_section_content
    -> Contenu

    #menubar_section_appearance
    -> Apparence

    #menubar_section_interactions
    -> Interactions

    #menubar_section_manage
    -> Configuration

    #menubar_section_help
    -> Aide

    #menubar_favorites
    -> Bouton favoris (invisible pour le fondateur du blog)

    La classe menubar_section.menubar_section sert à définir l'apparence des sections (les petites barres blanches verticales). Cependant, toutes les images de sections ne se trouvent pas dans cette classe (notamment pour les favoris, je reviendrais dessus plus loin)

    Pour la dernière <div> #menubar_info, il s'agit de la partie utilisée par le staff d'EklaBlog pour noter de cours message à l'intention des utilisateurs

    Les flèches "hide" et "show"

    Vous avez certainement remarqué que j'ai oublié ne parler de l'ID #menubar_show. Il s'agit en fait de la flèche permettant de rendre la menubar visible après avoir été masquée. Nous allons donc voir un peu plus en détail comment fonctionne cette flèche

    <div id="menubar_show" style="display: none;" onclick="MenuBar.show();">
    </div>
    <div id="menubar" style="display: block">
    <table>
       <tr>
          <td id="menubar_hide" onclick="MenuBar.hide();">
          </td>

    Je ne suis pas sûre que l'explication technique vous intéresse, je dirais donc simplement que hide() et show() sont deux fonctions qui sont appelées au clique pour afficher ou masquer la menubar (et accessoirement, afficher #menubar_show lorsque la menubar est invisible).

    #menubar_show et #menubar_hide sont donc deux éléments totalement différents ;)

    Pour changer l'image de la flèche (parce que je suppose que c'est ce qu'il vous intéresse), vous pouvez créer des nouvelles images en adaptant la taille de la div et de la cellule. Si vous n'avez pas envie de calculer de nouvelles mesures, vous pouvez faire une unique image sur le même modèle que les flèches de base :

    /!\ Les dimensions doivent être identiques. Copiez / collez cette image dans votre logiciel de graphisme pour ne pas vous tromper

    Les deux flèches de gauche sont les flèches pour masquer la menubar. Celle du bas est l'image affiché lorsque vous cliquez
    A droite, ce sont les flèches pour remettre la menubar

    Je le répète, il s'agit de deux éléments différents donc vous devez noter les deux sélecteurs dans votre CSS

    #menubar_hide,
    #menubar_show { background-image: url("IMAGE");
    }

    Remplacez image par l'url de votre image.

    Si avez fait deux images différentes il faut les renseigner séparément : 

    #menubar_hide { background-image: url("IMAGE1");
          width: Xpx;
    }
    #menubar_show { background-image: url("IMAGE2");
         width: Xpx;
    }

    Pour ceux qui ne suivent pas, IMAGE1 sera l'image affichée pour masquer la manubar et IMAGE2 l'image pour la remettre.
    Si votre image ne fait pas 17px de large, vous devez également préciser sa largeur (remplacez le X)

    Les sections et les onglets

    Attaquons la "grosse" partie.

    Les sections sont les éléments de la menubar que l'on peut survoler pour afficher un petit menu, que je vais appeler "onglet". Les notifications et les favoris seront vu un peu plus loin.

    Contenu, Apparence, Interactions, Configuration et Aide ont exactement la même structure, je vais donc commencer par ceux là en prenant #menubar_section_content comme exemple. La section du profil est un tout petit peu différente.

    <td class="menubar_section" id="menubar_section_content">
          <div>
          <img src="/images/menubar/icon_content.png" alt="" class="icon" /> Contenu </div>
          <ul>
                <li onclick="Module.edit('mod', 'article', 'new');">Nouvel article</li>
                <li onclick="Module.create('mod', 'articles');">Nouvelle rubrique</li>
                <li onclick="Module.create('mod', 'html');">Nouvelle page</li>
                <li onclick="Module.edit('mod', 'survey', 'new');">Nouveau sondage</li>
                <li onclick="Module.create('mod', 'newsletter');">Nouvelle newsletter</li>
                <li onclick="Module.create('mod', 'flickr');">Nouvelle galerie Flickr</li>
                <li onclick="Module.create('mod', 'guestbook');">Nouveau livre d'or</li>
                <li onclick="Module.create('mod', 'forum');">Nouveau forum</li>
                <li onclick="Windows.load('mod', 'manage');">Gérer les rubriques</li>
                <li onclick="Windows.load('blog', 'files');">Gérer les fichiers</li>
          </ul>
    </td> 

    Je vous rappelle que .menubar_section est la classe affichant les barre de séparation. Si vous voulez les supprimer il vous suffit d'indiquer qu'il y a pas d'arrière plan :

    .menubar_section { background: none; }

    #menubar_section_content est le sélecteur de cette section. Si vous travaillez sur une autre section, il suffit de remplacer "content" par le nom de la section en question. Tous les sélecteurs sont notés dans la première partie de l'article.

    Si vous voulez modifier toutes les sections d'un coup, il faut le noter de cette façon :

    #menubar_section_content,
    #menubar_section_appearance,
    #menubar_section_interactions,
    #menubar_section_manage,
    #menubar_section_help,
    #menubar_section_account { propriété : valeur; }

    Pour ceux qui s'apprête à copier coller le code tel quel, "propriété : valeur;" est à remplacer par les propriétés de votre choix.

    Passons maintenant à la petite différence de #menubar_section_account

    <td class="menubar_section" id="menubar_section_account">
           <a href="http://www.eklablog.com/profile/nagalia">
                    <img src="http://ekladata.com/iwK1Zo1ze8aMq9k1mAi0f42xeCM@19x19.gif" alt="" class="icon" />
                    Nagalia
            </a>

            <ul>
                  <li onclick="Windows.load('membres', 'myprofile');">Mon profil</li>
                  <li onclick="Windows.load('membres', 'profile');">Informations personnelles</li>
                  <li onclick="Windows.load('membres', 'following');">Abonnements</li>
                  <li onclick="Windows.load('membres', 'msg');">Messages</li>
                  <li onclick="Windows.load('membres', 'notifications');">Notifications</li>
                  <li onclick="Windows.load('membres', 'revenues');">Revenus</li>
                  <li onclick="document.location='http://www.eklablog.com/?createblog';">Créer un blog</li>
                  <li onclick="logout();">Déconnexion</li>
            </ul>
    </td>

    Vous pouvez voir que l'avatar et le pseudo sont dans un lien qui redirige à la page de l'utilisateur. Par conséquent, si vous voulez appliquer des effets de texte sur vos section (changer la couleur par exemple) vous devez également indiquer a dans le sélecteur. Un exemple sera peut être plus parlant :

    #menubar { color : red; }

    Ce code modifiera la couleur de texte de toutes les sections sauf de #menubar_section_account
    Pour résoudre ce problème, vous devriez écrire ceci :

    #menubar,
    #menubar a { color: red; }

    Maintenant que vous êtes au point avec les sections, voyons les onglets

    Vous avez sûrement remarqué qu'il s'agit d'une liste. Donc pour y accéder en CSS, nous allons utiliser la classe .menubar_section en précisant que nous nous intéressons aux listes contenues dans cette classe :

    .menubar_section li { propriété : valeur; }

    Il faudra également utiliser le pseudo-class :last-child (traduisez littéralement par "dernier enfant") pour travailler sur la dernière ligne de l'onglet, par exemple si vous voulez ajouter un arrondis :

    .menubar_section li:last-child { propriété: valeur; }

    Si vous voulez changer les images, vous pouvez les faire sur ce modèle, ce qui vous évitera d'avoir à changer la taille des onglets :

     

    La zone bleue correspond à la partie visible au survol. 

    Si vous voulez mettre uniquement des couleurs, n'oubliez pas de supprimer l'image de base

    .menubar_section li { background-image: none;
          background-color: COULEUR;}
    .menubar_section li:last-child { background-image: none;
          background-color: COULEUR;} 
    Les notifications

    Si vous regardez dans le code source, vous verrez que le code des notification est ridiculement court comparé au reste des onglets :

    <td class="menubar_section" id="menubar_notifications" onclick="MenuBar.toggleNotificationsPanel();" title="Notifications">
       <div>
             <img src="/images/menubar/icon_notifications.png" alt="" class="icon" />
             <span id="nb_new_notifs"></span>
       </div>
       <ul id="notifications_panel"></ul>
    </td>

    Le contenu des notifications sera chargé dynamiquement lorsque vous cliquerez sur l'icône.

    #nb_new_notif est le nombre de nouvelle notification. Quand la balise <span> est vide, c'est simplement qu'il n'y a pas de nouvelle notification ;)
    #notification_panel est l'onglet qui affiche les notification. Lorsque le contenu est chargé, il s'agit d'une liste qui contient plusieurs éléments :

    <ul id="notifications_panel">
          <li>
                <a href="#">
                     <span class="notif_msg">...</span>
                     <span class="notif_date">...</span>
                </a>
          </li>
          <li>...</li>
    </ul>

    Les classes .notif_msg et .notif_date permettent respectivement de modifier l'affichage du texte de la première ligne et de la deuxième ligne du bloc de notification

    Voici l'image de base des notification. 
    Les parties blanches correspondent au mode d'affichage normal, la dernière étant la dernière ligne de l'onglet "Afficher toutes les notification"
    La partie bleue claire indique les nouvelles notifications
    Enfin, en bleu foncé, c'est l'état survolé

    Pour mettre de la couleur ou une autre image, vous devez utiliser les sélecteurs suivants :

    Notifications normales :

    #notifications_panel li { propriété : valeur; }

    Notifications survolées :

    #notifications_panel li:hover { propriété : valeur; }

    Nouvelles notifications :

    #notifications_panel .new_notification {propriété : valeur; }

    Bien sûr, comme pour les onglets vu précédemment, vous pouvez utiliser :last-child pour modifier la dernière ligne.

    Favoris

    Je passe rapidement sur ce module, car il n'y a pas grand chose à dire, excepté qu'il n'est pas du tout fait comme les autres, donc les images à enlever ou modifier ne se trouvent pas aux même endroits...

    La séparation se trouve en background de #menubar_favorites. Pour l'enlever :

    #menubar_favorites{background-image: none}

    En supprimant le fond bleu du survol, on supprime également l'icône du coeur. Il faut la replacer comme ceci :

    #menubar_favorites_btn,
    #menubar_nofavorites_btn:hover {
          background: url("/images/menubar/icon_nofavorite.png")no-repeat 50% 50%; 
    }
    #menubar_favorites_btn:hover,
    #menubar_nofavorites_btn {
          background: url("/images/menubar/icon_favorite.png")no-repeat 50% 50%;
    }

    Le code précédant permet également de changer cette icône. Remplacez les url en bleue par vos images. La première correspond au coeur rouge et la deuxième au coeur gris.

    Module de connexion

    On a trop souvent tendance à l'oublier mais il fait bien partie de la menubar ;)

    <td id="menubar_signin">
     <form action="?" method="post">
     <p>
     Connexion :
     <input type="text" name="pseudo" id="menubar_signin_username" />
     <input type="password" name="passe" id="menubar_signin_password" />
     <input name="connexion"/>
     <input name="remember"/>
     <input type="submit" id="menubar_signin_submit" class="button_win" />
     </p>
     </form>
    </td>

    La barre de séparation se trouve en arrière plan de #menubar_signin

    #menubar_signin { background: none; }

    Vous pouvez également modifier les éléments du formulaire (champs de texte et bouton)

    Pour finir, les deux boutons qui apparaissent à côté du module de connexion appartiennent à la même classe .menubar_button. Vous n'avez donc qu'à spécifier background : none; pour enlever la séparation

    .menubar_button { background: none;}
    Des codes pratiques

    Comme la menubar est assez longue et fastidieuse à modifier, je vous propose quelques codes tout près pour vous éviter de taper des lignes répétitives de code :

    Supprimer toutes les barres de séparation 

    .menubar_button
    .menubar_section:hover,
    .menubar_section,
    .menubar_separation,
    .menubar_button,
    #menubar_logo,
    #menubar_favorites { background: none;}

    Supprimer tout les fonds bleus au survol

    #menubar_section_content,
    #menubar_section_appearance,
    #menubar_section_interactions,
    #menubar_section_manage,
    #menubar_section_account,
    #menubar_section_help,
    #menubar_notifications,
    #menubar_signin { background: none;
    }
    #menubar_favorites_btn,
    #menubar_nofavorites_btn:hover {
          background: url("/images/menubar/icon_nofavorite.png")no-repeat 50% 50%;
    }
    #menubar_favorites_btn:hover,
    #menubar_nofavorites_btn {
          background: url("/images/menubar/icon_favorite.png")no-repeat 50% 50%;
    }

    Menubar visible au survol avec transition (il faut remonter la page pour éviter les 20px de vide entre le contenu du blog et le haut de la fenêtre)

    #body {top: 0px;
       border-top: none;
    }
    #menubar { opacity: 0;
       transition: 800ms;
       -webkit-transition: 800ms;
       -moz-transition: 800ms;
       -o-transition: 800ms;
    }
    #menubar:hover{ opacity: 1; }

    Exemple d'un onglet de notification gris et rouge

    #notifications_panel{ background-color: silver;
       border-radius: 0 0 20px 20px;
    }
    #notifications_panel li { background: none;}
    #notifications_panel li:hover {background: rgba(255,255,255,0.5);
    }
    #notifications_panel li:last-child:hover{  border-radius: 0 0 20px 20px;
       background: rgba(255,255,255,0.5);
    }
    #notifications_panel .new_notification {background : red; }

    Exemple d'onglets gris

    .menubar_section ul { background-color: silver;
       border-radius: 0 0 20px 20px;
    }
    .menubar_section li { background-image:none;}
    .menubar_section li:hover { background: rgba(255,255,255,0.5); }
    .menubar_section li:last-child {background-image:none;}
    .menubar_section li:last-child:hover {border-radius: 0 0 20px 20px; }


    43 commentaires
  •  

    Pour suive ce tutoriel, vous avez besoin d'un minimum de connaissance en HTML et en CSS, nous n'utiliserons pas de JS.

    HTML


    On va créer notre menu sous la forme de listes imbriquées. La première liste contiendra les titres visibles, et les sous-listes seront les onglets visibles au survol.
    1- Créez une div avec un id pour pouvoir plus facilement travailler dessus en CSS

    <div id="menu_deroulant">

    </div>

    2- Créez votre première liste (les titres visibles)

    <div id="menu_deroulant">
         <ul>
              <li>
                   Titre 1
              </li>
              <li>
                   Titre 2
              </li>
              <li>
                   Titre 3
              </li>
         </ul>
    </div>

    3- Enfin, créez vos sous listes qui apparaitrons au survol

    <div id="menu_deroulant">
         <ul>
              <li>Titre 1
                   <ul>
                        <li> Onglet 1 </li>
                        <li> Onglet 2 </li>
                        <li> Onglet 3 </li>
                   </ul>
              </li>
              <li>Titre 2
                   <ul>
                        <li> Onglet 1 </li>
                        <li> Onglet 2 </li>
                        <li> Onglet 3 </li>
                   </ul>
              </li>
              <li>Titre 3</li>
         </ul>
    </div>

    4- N'oubliez pas d'ajouter vos liens

    <div id="menu_deroulant">
         <ul>
              <li>Titre 1
                   <ul>
                        <li> <a href="#">Onglet 1</a> </li>
                        <li> <a href="#">Onglet 2</a> </li>
                        <li> <a href="#">Onglet 3</a> </li>
                   </ul>
              </li>
              <li>Titre 2
                   <ul>
                        <li> <a href="#">Onglet 1</a> </li>
                        <li> <a href="#">Onglet 2</a> </li>
                        <li> <a href="#">Onglet 3</a> </li>
                   </ul>
              </li>
              <li><a href="#">Titre 3</a></li>
         </ul>
    </div>

     

    CSS


    Ne modifiez pas le code suivant, il permettra à votre menu de fonctionner correctement.

    #menu_deroulant ul {
              margin:0;
              padding:0;
              list-style-type:none; }
    #menu_deroulant li { 
              float:left; }
    #menu_deroulant li:hover ul li { 
              float:none; }
    #menu_deroulant ul li ul { 
              display:none; }
    #menu_deroulant ul li:hover ul {
              display:block;}
    #menu_deroulant li ul {
              position:absolute;
              z-index: 10; }

    Passons maintenant à la personnalisation :

    La "barre" contenant vos titres visibles.

    #menu_deroulant{
              height: Xpx;  /*définissez sa hauteur*/
              propriété : valeur;  /*personnalisez*/
    }

    Le code suivant correspond à vos titres visibles.

    #menu_deroulant ul li a,
    #menu_deroulant ul li {
              display:block;
              propriété : valeur;  /*personnalisez*/
    }

    Code pour les onglets visibles au survol.

    #menu_deroulant ul li ul li a,
    #menu_deroulant ul li ul li{
              display:block;
              propriété : valeur;  /*personnaliser*/
    }

      

    Placement dans l'en-tête


    Mettez votre HTML dans un module simple. Puis modifier votre id dans le css de la manière suivante :

    #menu_deroulant{
              height: Xpx;  /*définissez sa hauteur*/
              propriété : valeur;  /*personnalisez*/
              position: absolute;
              top: Xpx ; /*position par rapport au haut de la page*/
              left: Xpx; /*position par rapport au bord gauche de la page*/
    }

    "position: absolute" rend votre menu indépendant par rapport aux autres éléments de la page. Déplacez le ensuite en changeant les valeurs de "top" et "left"

    Pour plus d'information, je vous renvoie à l'article suivant :
    => http://fanstasy-graph.eklablog.net/contenu-hors-des-articles-a30141132


    89 commentaires

  •        

    Tuto by Saphiriella

    3 commentaires